Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何在包含匹配单词的文件中删除给定间隔的行?_Linux_Bash_Sed - Fatal编程技术网

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

Linux 如何在包含匹配单词的文件中删除给定间隔的行?,linux,bash,sed,Linux,Bash,Sed,我需要使用sed从文件中只删除包含给定单词的行。但是如果我的文件有50行,我只需要看前30行 我知道: sed '1,30d' f.txt 将删除文件的前30行 以及: 将删除文件中包含匹配单词“Text”的所有行 我如何结合这两种方法来解决我的问题? 谢谢。您似乎想删除文件前30行中包含文本的行 你可以说: sed '1,30{/Text/d}' f.txt 如果要删除文件中任何位置的前30行和包含文本的行,可以说: sed '1,30d;/Text/d' f.txt 您错过了“-i”

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

我知道:

sed '1,30d' f.txt
将删除文件的前30行

以及:

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

我如何结合这两种方法来解决我的问题?
谢谢。

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

你可以说:

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

如果要删除文件中任何位置的前30行和包含
文本的行,可以说:

sed '1,30d;/Text/d' f.txt
您错过了“-i”选项:

应该更快,尤其是在大文件上,如果在30后丢弃行。如果不是,以前的解决方案是最好的

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