使用变量从文件中删除前 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

相关内容