繁体   English   中英

在Mac终端中同时使用lsof和awk的奇怪行为?

[英]Strange behavior using lsof and awk together in Mac terminal?

我想在lsof找到所有带有“ Google”的行,因此我尝试了以下操作:

lsof |  awk '/.*google.*/ { print $1 "," $2 "," $3} ' > new_file.csv

正确地产生输出以“ google”开头的行的输出。

但是,然后我尝试这样做,csv不包含任何内容:

lsof |  awk '/\s*google.*/ { print $1 "," $2 "," $3} ' > new_file.csv

但是,我认为\\s*表示任意数量的空格。 是否有任何这种行为的原因? 谢谢。

\\s表示空格, \\s*表示零个或多个空格,但不是awk。

awk使用其他(较旧的)正则表达式引擎。

对于awk,您希望[[:space:]]*匹配零个或多个空格。 (这是字符列表[][:space:]的字符类类。)

话虽这么说,如果您只是关心google在输出中,那么您只需要/google/

如果您想使用单词锚定的google则需要/\\<google\\>/

正如Ed Morton指出的那样,GNU Awk 4.0+版本还添加了对\\s元字符的支持。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM