我在文件中有一个列表,其中包含范围在1到66000之间的数字。我想对所有数字进行grep,并排除数字80和443。例如,可以确定1080为4431。
答案 0 :(得分:2)
尝试一下:
grep -Pv '(^|[^0-9])(80|443)($|[^0-9])' file
这将打印所有不包含80和443的行,这些行由非数字字符或行的开头/结尾包围。
$ cat file
port 332
port 4443
port 80
port 8080
port 443
332 port
4443 port
80 port
8080 port
443 port
$ grep -Pv '(^|[^0-9])(80|443)($|[^0-9])' file
port 332
port 4443
port 8080
332 port
4443 port
8080 port
答案 1 :(得分:1)
这可以做到:
egrep -v '^(80|443)$' yourfile
这将打印文件中不完全由80
或443
组成的所有行。
答案 2 :(得分:0)
为补充约瑟夫的答案,已弃用egrep
,而推荐使用grep
,因此答案最好表示为:
grep -Ev '^(80|443)$' yourfile
编辑:如果每行上还有其他信息,例如"80"
或blah 80 blah
,并且您也想排除这些行,则可以改用字边界(\b
) ^
和$
grep -Ev '\b80\b|\b443\b' yourfile