首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式与grep不工作?

正则表达式与grep不工作?
EN

Stack Overflow用户
提问于 2015-06-26 00:04:40
回答 2查看 1.4K关注 0票数 0

我在Windows 7上运行cygwin,grep 2.21。

我正在尝试从netstat获取所有tcp连接,因此我运行以下命令:

代码语言:javascript
复制
netstat | grep -i "^(TCP|UDP)"

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

代码语言:javascript
复制
netstat | egrep -i "^(TCP|UDP)"

也什么也不回。我在这里错过了什么?我以为插入符号的意思是“开始”。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-26 01:49:13

netstat使用小写字符输出协议。尝试以下任何一种方法:

代码语言:javascript
复制
netstat | grep '^\(udp\|tcp\)'

代码语言:javascript
复制
netstat | egrep '^(udp|tcp)'

两者的区别在于,白鹭支持扩展的正则表达式语法,其中不应该转义()|。正如鲁尔·拉莫斯·里贝罗所指出的,egrep等同于使用grep -e,因此也可以使用netstat | grep -e '^(udp|tcp)'

票数 0
EN

Stack Overflow用户

发布于 2015-06-26 04:12:46

对我来说,netstat | grep -P '(tcp|udp)'工作过。

如果有必要,您可能希望使用i标志来忽略这种情况。

代码语言:javascript
复制
netstat | grep -Pi '(TcP|UDp)'

关于这里的另一个答案,使用egrepgrep -e可以得到相同的结果。基于

-P旗子是受这个职位启发的。

使用选项-P (相应地将其设置为man grep ),将模式解释器设置为珀尔。但是,不知道为什么没有-P它就不能工作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31062799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档