我在Windows 7上运行cygwin,grep 2.21 我想从netstat获取所有tcp连接,所以我运行以下命令:
netstat | grep -i "^(TCP|UDP)"
现在,它什么也没有返回,但是当我运行netstat
时,它显然会返回一堆tcp连接。我也尝试过:
netstat | egrep -i "^(TCP|UDP)"
也没有任何回报。我在这里错过了什么?我认为插入符号表示"以"开头。感谢。
答案 0 :(得分:1)
对我来说,netstat | grep -P '(tcp|udp)'
有效。
如果需要,您可能希望使用i
标志来忽略该情况。
netstat | grep -Pi '(TcP|UDp)'
关于此处的其他答案,使用egrep
或grep -e
会得到相同的结果。基于this。
-P
标志的灵感来自this post。
使用选项-P
,相应于man grep
,将模式解释器设置为perl。不知道为什么没有-P
它不起作用。
答案 1 :(得分:0)
netstat使用小写字符输出协议。请尝试以下任一操作:
netstat | grep '^\(udp\|tcp\)'
或
netstat | egrep '^(udp|tcp)'
两者之间的区别在于egrep支持扩展正则表达式语法,其中(
,)
和|
不应转义。正如Reuel Ramos Ribeiro所述,
egrep
相当于使用grep -e
,因此可以使用netstat | grep -e '^(udp|tcp)'
。