就地替换为sed但仅保留一部分行

时间:2013-03-08 15:48:25

标签: sed

我想为sed运行一个inplace命令,只保留文件中的某些行。这与通常的用法不同,其中使用带有替换命令的sed -i来替换文件行。例如,假设我有这个文件:

> cat file.txt
fox
rabbit
fox
fox
wolf

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

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

但是这不能按预期工作。我错过了什么?

2 个答案:

答案 0 :(得分:2)

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

sed -i -nr '/fox/p' file

答案 1 :(得分:1)

试试这一行:

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

这将清空那些不匹配的行,而不是删除它们。所以fox行留在他们的位置。

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

sed -i '/fox/!d' file