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

Dav*_*ve. 2 text-processing

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

------------
ID  LOGIN   
------------
28  user1
25  user2 
5   user3
Run Code Online (Sandbox Code Playgroud)

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

有任何想法吗 ?

wur*_*tel 8

有几种方法可以做到。

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

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

grep -w '^5'
Run Code Online (Sandbox Code Playgroud)

-w通知grep相匹配的确切的词,所以这不会匹配“52”。"^" 告诉 grep 在行的开头搜索 5,如果有前导空格,这将失败。

awk解决方案将如下所示:

awk '$1 == 5'
Run Code Online (Sandbox Code Playgroud)

如果您只需要用户名,即第二列:

awk '$1 == 5 {print $2}'
Run Code Online (Sandbox Code Playgroud)

如果您要搜索的是字符串而不是数值,请将字符串括在双引号中:

awk '$1 == "abc" {print $2}'
Run Code Online (Sandbox Code Playgroud)

  • @戴夫。由于此答案对您有用,请考虑单击它旁边的复选框,向未来的读者发出信号,它回答了您的问题。 (2认同)