我正在尝试 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内置read
或cut
//似乎更合适(特别是一旦你到达需要做更多事情的地步)sed
。awk
答案3
它对我有用。第一场比赛抓住了:
users | grep -m 1 "^\b\w*\b"
最后一场比赛抓住了
users | grep "^\b\w*\b" |tail -1
答案4
为什么grep
?该grep
命令用于搜索。您似乎需要cut
or awk
,但 read 内置似乎也合适。
比较它们:
users | cut -d' ' -f1
users | sed 's/\s.*//'
users | awk '$0=$1'
如果要将其存储在变量中,请使用 bash:
read myVar blah < <(users)
或者:
read myVar blah <<< $(users).
以上答案基于@manatwork 评论。