以下命令适用于删除前 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