変数を使用して、ファイルから最初のn行を削除します。

変数を使用して、ファイルから最初のn行を削除します。

次のコマンドは、最初の3行を削除するために使用されます。

sed -i -e 1,3d t.txt

だから私は3を以下のスクリプトの変数に置き換えようとしました。

NrLines=$(wc -l t.txt)
sed -i -e 1,"$NrLines{d}" t.txt

次のエラーが発生しました。

sed: -e expression #1, char 13: unexpected `}'

私は何が間違っていましたか?

答え1

コマンドの置き換えと中括弧が誤って使用されているようです。

NrLines=$(wc -l < t.txt)
sed -i -e 1,"${NrLines}d" t.txt

答え2

これを行うには、別の方法を使用しますtail(大容量ファイルには最適なオプションではありません)。

NrLines=3
<<< "$(< t.txt)" tail -n +$((NrLines+1)) > t.txt

関連情報