仅使用 grep 查找第一次出现的情况

仅使用 grep 查找第一次出现的情况

假设我有一个包含很多单词的文件,我只想找到第一个具有模式“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 个匹配项,依此类推。

相关内容