[英]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.