如何在包含匹配单词的文件中删除给定间隔的行?

时间:2013-12-11 09:17:27

标签: linux bash sed

我需要使用sed从文件中仅删除包含给定单词的行。但是如果我的文件有50行,我只需要查看前30行。

我知道:

sed '1,30d' f.txt

将删除文件的前30行。

sed '/Text/d' f.txt

将删除包含匹配单词“Text”的文件中的所有行。

如何将这两者结合起来解决我的问题? 谢谢。

3 个答案:

答案 0 :(得分:3)

您似乎想删除文件中前30行中包含Text的行。

你可以说:

sed '1,30{/Text/d}' f.txt

如果您要删除文件中任意位置的前30行包含Text的行,您可以说:

sed '1,30d;/Text/d' f.txt

答案 1 :(得分:1)

你错过了“-i”选项:

sed -i '1,30{/Text/d}' f.txt

答案 2 :(得分:1)

sed "/Text/ d;30 q" f.txt

应该更快,特别是在巨大的文件 IF 你丢弃30后的行。如果不是以前的解决方案是最好的