我需要为用户 ID 找到一个用户。认证系统的返回结果如下。现在,使用 bash 脚本,我需要提取具有确切数字的行。不是5和25..
------------
ID LOGIN
------------
28 user1
25 user2
5 user3
如果我使用,grep 5
我确实会得到 2 行,但我需要带有“5”的行。
有任何想法吗 ?
答案1
有几种方法可以做到这一点。
恕我直言,最好的方法是使用awk
,这在处理字段时很有用。
如果你想要一个grep
基于的解决方案,我会这样做:
grep -w '^5'
告诉我们-w
要grep
匹配确切的单词,所以这不会匹配“52”。 “^”告诉 grep 搜索行首的 5,如果存在例如前导空格,则会失败。
解决awk
方案如下所示:
awk '$1 == 5'
如果您只想要用户名,即第二列:
awk '$1 == 5 {print $2}'
如果您要搜索字符串而不是数值,请将字符串括在双引号中:
awk '$1 == "abc" {print $2}'
答案2
您可以尝试使用正则表达式(行中的第一个字符)并包含空格:
grep -E "^5 "
答案3
请尝试以下操作:
query-auth-system | grep "^5\\>"
^
: 表示“在行首匹配\\>
: 匹配单词边界。所以它会匹配5
,但不会50
。