【发布时间】:2020-03-15 05:54:41
【问题描述】:
我想修剪一个文本文件并删除从第 n 行到文件末尾的所有行。我尝试为此使用 sed。 n=26 的 sed 命令应如下所示:
sed -i '26,$d' /path/to/textfile
所以在我的文本文件中我事先不知道 n,但我知道该行中有一个唯一的文本。所以我就这样尝试了:
myvar=`grep -n 'unique text' /path/to/textfile | awk -F":" '{print $1 }'`
sed -i "${myvar}"',$d' /path/to/textfile
这有效并删除了所有想要的行,但它会引发错误消息:
sed: -e expression # 1, character 1: unknown command: »,«
所以我尝试将命令更改为:
myvar=`grep -n 'unique text' /path/to/textfile | awk -F":" '{print $1 }'`
sed -i "${myvar},$d" /path/to/textfile
这样我得到了同样的错误信息,但它不会删除这些行。 我尝试了 ' 和 " 的一些变体以及如何将变量放在那里,但它从来没有按预期工作。有人知道我做错了什么吗?
只要我能在 bash 脚本中完成,我会很感激其他修剪文本文件的方法。
【问题讨论】: