假设我有一个包含很多单词的文件,我只想找到第一个具有模式“xyz”的单词。如果同一行有多个具有这种模式的单词怎么办?
-m
返回第一行中与其匹配的所有单词。我只需要 grep 命令。
答案1
默认情况下grep
打印线匹配模式,因此如果该模式在一行中出现一次或多次,grep
将打印整行。
添加该标志-m 7
将告诉grep
您仅打印模式出现的前 7 行。
所以这应该可以达到你想要的效果(我还没有测试过):
grep -o -m 1 xyz myfile | head -1
编辑:正如@Kusalananda 所指出的,您并不严格需要该-m
标志,但使用它意味着grep
不需要解析整个文件,并且会更快地输出结果,特别是如果myfile
是一个大文件。
答案2
您的问题的答案在 grep 手册页中:
grep -m1 'searchstring' file_name
选项-m<number>
是关键。-m1
只会显示第一个匹配项、-m2
前 2 个匹配项,依此类推。