我试图使用 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'