排除特定字符串 grep 也包括类似的字符串

排除特定字符串 grep 也包括类似的字符串

我试图使用 grep 命令排除列表中的某些 URL 条目(使用 IP 而不是域名),特别是删除https://:80.然而,带有https://和 的条目:8080也被包括在内。

我的 grep 命令是:

egrep -v "https://[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}:80"

如何强制 grep 只排除:80而不排除:8080

输入文件内容的示例是:

http://10.10.46.1:80
http://10.10.48.67:8080
http://10.10.48.67:443
https://10.10.46.1:80
https://10.10.48.67:8080
https://10.10.48.67:443

答案1

只是你的命令更具体一点grep。如果 IP 是该行中唯一的内容,那么将:80是最后 3 个字符,请使用:

grep -Ev "https://[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}:80$"

或者,如果 后可以有空格80,请使用:

grep -Ev "https://[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}:80\s*$"

如果:80不是该行的最后一件事,只需 grep 查找后面有空格的情况:

grep -Ev "https://[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}:80 "

如果最后一个字符不是空格,请进行调整以适合您的输入。

答案2

您可以利用数据规律性来压缩正则表达式:

egrep -xv 'https?://[0-9]{1,3}([.][0-9]{1,3}){3}:80'

相关内容