正则表达式与grep无法正常工作?

时间:2015-06-26 00:04:40

标签: regex grep udp cygwin

我在Windows 7上运行cygwin,grep 2.21 我想从netstat获取所有tcp连接,所以我运行以下命令:

netstat | grep -i "^(TCP|UDP)"

现在,它什么也没有返回,但是当我运行netstat时,它显然会返回一堆tcp连接。我也尝试过:

netstat | egrep -i "^(TCP|UDP)"

也没有任何回报。我在这里错过了什么?我认为插入符号表示"以"开头。感谢。

2 个答案:

答案 0 :(得分:1)

对我来说,netstat | grep -P '(tcp|udp)'有效。

如果需要,您可能希望使用i标志来忽略该情况。

netstat | grep -Pi '(TcP|UDp)'

关于此处的其他答案,使用egrepgrep -e会得到相同的结果。基于this

-P标志的灵感来自this post

使用选项-P,相应于man grep,将模式解释器设置为。不知道为什么没有-P它不起作用。

答案 1 :(得分:0)

使用小写字符输出协议。请尝试以下任一操作:

netstat | grep '^\(udp\|tcp\)'

netstat | egrep '^(udp|tcp)'

两者之间的区别在于支持扩展正则表达式语法,其中()|不应转义。正如Reuel Ramos Ribeiro所述, egrep相当于使用grep -e,因此可以使用netstat | grep -e '^(udp|tcp)'