grep 第 5 行中的特定数字,但不是 25 或 52 等

grep 第 5 行中的特定数字,但不是 25 或 52 等

我需要为用户 ID 找到一个用户。认证系统的返回结果如下。现在,使用 bash 脚本,我需要提取具有确切数字的行。不是5和25..

------------
ID  LOGIN   
------------
28  user1
25  user2 
5   user3

如果我使用,grep 5我确实会得到 2 行,但我需要带有“5”的行。

有任何想法吗 ?

答案1

有几种方法可以做到这一点。

恕我直言,最好的方法是使用awk,这在处理字段时很有用。

如果你想要一个grep基于的解决方案,我会这样做:

grep -w '^5'

告诉我们-wgrep匹配确切的单词,所以这不会匹配“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

相关内容