我尝试使用grep来匹配这样的情况:
我有以这种格式的主机名和ips列表:
238-456 192.168.1.1
ak238-456 192.168.1.2
238-456a 192.168.1.3
458-862 192.168.1.4
现在我尝试grep“238-456”但当然这会返回:
238-456 192.168.1.1
和...
ak238-456 192.168.1.2
和...
238-456a 192.168.1.1
但我只需要238-456的线。在这种情况下,我不能使用-x因为当然它不会返回任何结果。
有没有简单的方法来解决这个问题?
给定的答案“^”解决了第一个问题。但最后不是那个带有“a”的人。有人可以帮忙吗?
答案 0 :(得分:5)
在此特定示例中,您可以搜索^238-456
,它仅在行开头出现所需文本时才匹配。有关更一般的解决方案,请了解正则表达式(这是一个示例)。
编辑:
对于您的新问题,您只需通过搜索"^238-456 "
手动添加空格即可。空格也有一些正则表达式字符类。 "^238-456\>"
应该在这里工作。 \>
表示单词边界,您可能需要包含引号。另一个单词边界是\<
,因此您可以将整个内容更改为"\<238-456\>"
,这样就可以消除它在行开头的依赖性。
答案 1 :(得分:2)
使用awk
awk '$1=="238-456"' file
答案 2 :(得分:0)