从bash中的文件grep精确模式

时间:2015-06-26 10:38:39

标签: bash grep

我在文件中有以下IP地址

3.3.3.1
3.3.3.11
3.3.3.111

我正在使用此文件作为另一个程序的输入文件。在该程序中,它将grep每个IP地址。但当我grep内容时,我得到了一些错误的输出。

cat testfile | grep -o 3.3.3.1

但是我得到了像

这样的输出
3.3.3.1
3.3.3.1
3.3.3.1

我只是想得到确切的输出。我怎么能用grep

来做到这一点

3 个答案:

答案 0 :(得分:4)

使用以下命令:

grep -owF "3.3.3.1" tesfile

-o仅返回匹配而不是整行。-w greps表示整个单词,这意味着匹配必须包含在非{c} <space><tab>等单词字符中,,;行的开头或结尾等。它阻止grep将3.3.3.13.3.3.111匹配。

对于固定字符串而不是模式,

-F greps。这可以防止IP地址中的.被解释为任何字符,这意味着grep将不匹配3a3b3c1(或类似的东西)。

答案 1 :(得分:1)

要仅匹配整个单词,请使用grep -ow 3.3.3.1 testfile

更新:使用hek2mgl提供的解决方案,因为它更强大。

答案 2 :(得分:0)

你可以使用anhcors。

grep '^3\.3\.3\.1$' file

因为默认情况下grep使用正则表达式,所以你需要按顺序转义点以使grep与文字点字符匹配。