linux下如何搜索文件中特定行后面的单词?

linux下如何搜索文件中特定行后面的单词?

我有一个 100 行的文件,我必须搜索“happy”这个词,但搜索必须在文件的第 50 行之后开始。 Linux 中具体使用的 grep 命令是什么?

答案1

您还可以使用head+grep并将命令分组以{...}共享相同的输入:

{ head -n 50 >/dev/null; grep PATTERN; } <infile

这种方式head只获取第一n行,将它们转储到/dev/null,其余行由 处理grep

答案2

以下是sed从第 50 行到文件末尾然后用于grep搜索模式的方法:

sed -n '50,$p' file.txt | grep "happy"

或者只是使用sed完全这样做:

sed -n '50,$s/happy/&/p' file.txt

这里还有一些sed方法(感谢“Stéphane Chazelas”):

sed '50,$!d;/happy/!d' file.txt
sed -n '50,${/happy/p;}' file.txt

答案3

用于tail从第 51 行开始获取文件的内容,然后grep再获取。用于-i忽略大小写(因此您还可以匹配“Happy”、“HAPPY”等)并在前面添加一个空格,以仅匹配“happy”,而不匹配包含该字母序列的任何其他单词。

tail -n +51 filename.txt | grep -i " happy"

答案4

你会需要awk

awk 'NR>50' filename.txt | grep '\bhappy\b'

相关内容