我有一个 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'