如何使用 grep 仅打印第一个匹配项

如何使用 grep 仅打印第一个匹配项

我正在尝试 grep 用户名:

users | grep "^\b\w*\b" -P

我怎样才能让它只显示第一个匹配项grep

答案1

要仅显示第一个匹配项grep,请使用-m参数,例如:

grep -m1 pattern file

-m num,--max-count=num

num 个匹配后停止读取文件。

答案2

如果您确实只想返回第一个单词并且想要执行此操作grep,并且您grep恰好是最新版本的 GNU grep,那么您可能需要该-o选项。我相信你可以在没有 the 的情况下做到这一点,-P而且\b一开始的 the 并不是真正必要的。因此:users | grep -o "^\w*\b"

然而,正如@manatwork提到的,shell内置readcut//似乎更合适(特别是一旦你到达需要做更多事情的地步)sedawk

答案3

它对我有用。第一场比赛抓住了:

users | grep -m 1 "^\b\w*\b"

最后一场比赛抓住了

users | grep "^\b\w*\b" |tail -1

答案4

为什么grep?该grep命令用于搜索。您似乎需要cutor awk,但 read 内置似乎也合适。

比较它们:

users | cut -d' ' -f1
users | sed 's/\s.*//'
users | awk '$0=$1'

如果要将其存储在变量中,请使用 bash:

read myVar blah < <(users)

或者:

read myVar blah <<< $(users). 

以上答案基于@manatwork 评论

相关内容