繁体   English   中英

来自bash中文件的grep精确模式

[英]grep exact pattern from a file in bash

我的文件中有以下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做到这一点?

使用以下命令:

grep -owF "3.3.3.1" tesfile

-o仅返回匹配项,而不返回整行。 -w为全字里grep,这意味着匹配必须括在非字字符像<space><tab>, ; 它可以防止grep与3.3.3.111 3.3.3.1匹配。

-F抓住固定字符串而不是模式。 这样可以防止. 在IP地址中将其解释为任何char ,这意味着grep将不匹配3a3b3c1 (或类似的内容)。

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

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

您可以使用anhcors。

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

由于默认情况下grep使用正则表达式,因此您需要对点进行转义以使grep与文字点字符匹配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM