如何在大文件中遇到第一个模式匹配后使grep停止?

时间:2014-03-19 17:59:31

标签: shell grep

我有很多这样的行:

a|b|c
e|f|2
h|i|j

我想在第3列中找到仅包含数字的第一行(这将是示例中的第二行)。如何在不倾倒所有数据的情况下将其打包并将其管道化?

2 个答案:

答案 0 :(得分:1)

您可以在grep:

中使用-m1选项
grep -m1 "[0-9]$" file

根据man grep

 -m num, --max-count=num
         Stop reading the file after num matches.

或者使用awk更准确地做到:

awk -F'|' '$3 ~ /^[0-9]+$/{print; exit}' file
e|f|2

答案 1 :(得分:1)

POSIX解决方案是使用sed并在第一场比赛后退出:

sed -n '/|[0-9]*$/{p;q;}' file    # print and quit