sedは変数として渡されたときに数字を認識しません。

sedは変数として渡されたときに数字を認識しません。

この表現は:

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))"

おすすめ記事