Bash Grep加上“;“一半”-精确匹配

Bash Grep加上“;“一半”-精确匹配,bash,sed,grep,Bash,Sed,Grep,我尝试使用grep来匹配这样的情况: 我有以下格式的主机名和IP列表: 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 而且 ak238-456 192.168.1.2 238-456

我尝试使用grep来匹配这样的情况:

我有以下格式的主机名和IP列表:

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
而且

ak238-456 192.168.1.2
238-456a 192.168.1.1
但我只需要电话号码是238-456。在这种情况下,我不能使用-x,因为它当然不会返回任何结果

有没有简单的方法来解决这个问题


用“^”给出的答案解决第一个问题。但不是结尾有“a”的那个。somenone也能帮上忙吗?

在这个特定的示例中,您可以搜索
^238-456
,它只在所需文本出现在行首时匹配。要获得更通用的解决方案,请学习正则表达式(这是一个示例)

编辑:


对于您的新问题,您可以通过搜索
“^238-456”
手动添加一个空格。还有一些用于空格的regexp字符类<代码>“^238-456\>”应该可以在这里使用。
\>
表示单词边界,您可能需要包含引号。另一个单词边界是
\,在此特定示例中,您可以搜索
^238-456
,该边界仅在所需文本出现在行首时匹配。要获得更通用的解决方案,请学习正则表达式(这是一个示例)

编辑:


对于您的新问题,您可以通过搜索
“^238-456”
手动添加一个空格。还有一些用于空格的regexp字符类<代码>“^238-456\>”
应该可以在这里使用。
\>
表示单词边界,您可能需要包含引号。另一个单词边界是
\,您可以使用正则表达式:

egrep "^238-456"
应该这样做,从一开始就要求检查


可以找到这些正则表达式的教程示例。

您可以使用正则表达式:

egrep "^238-456"
应该这样做,从一开始就要求检查

可以找到这些正则表达式的教程示例。

使用awk

awk '$1=="238-456"' file
使用awk

awk '$1=="238-456"' file

谢谢工作起来很有魅力。但现在我发现entrys的结尾有一个“a”。是否也有解决方案?我编辑了我的问题。谢谢。工作起来很有魅力。但现在我发现entrys的结尾有一个“a”。是否也有解决方案?我编辑了我的问题。