1

我想为 sed 运行就地命令以仅在文件中保留某些行。-i这与使用带有替换命令的 sed 用于就地替换文件行的通常用法不同。例如,假设我有这个文件:

> cat file.txt
fox
rabbit
fox
fox
wolf

我只想保持与狐狸匹配的线条。我的想法是:

sed -inr '/fox/p' file.txt

但这并没有按预期工作。我错过了什么?

4

2 回答 2

2

您错过了“-i”采用可选参数的事实,因此-inr 与-i -n -r 不同,它与-i“nr”相同。尝试:

sed -i -nr '/fox/p' file
于 2013-03-09T15:36:40.917 回答
1

试试这一行:

sed -i '/fox/!{s/.//g}' file

这将通过不删除它们来清空那些不匹配的行。因此,fox线路停留在他们的位置。

如果您只想删除那些不匹配的行:

sed -i '/fox/!d' file
于 2013-03-08T15:57:16.663 回答