この表現は:
FN=27
LN=145
cat $FILENAME | sed -n $FN,$LNp
次のエラーで失敗します: "sed: -e 式 #1, 文字 3: 予期しない `,'" しかし、実際の数字を使用すると予想される結果が得られます。含まれる特殊文字と末尾または先行スペースはありません。
cat $FILENAME | sed -n 27,145p
ここで何が起こっているのでしょうか?
答え1
$LNp
変数が設定されていない場合、sed
コマンドは次のようになります(変数の引用を忘れたため、デフォルトはIFSであると仮定します)。
sed -n 27,
希望する場所は次のとおりです。
sed -n "$FN,${LN}p" < "$FILENAME"
シェルがp
変数名の一部にならないように指示します(sed -n "$FN,$LN"p
これも問題ありません)。
または、行が見つかるとすぐにより効率的に停止しますsed
。$LN
sed "$FN,\$!d;${LN}q" < "$FILENAME"
または
tail -n "+$FN" < "$FILENAME" | head -n "$((LN - FN + 1))"