![](/img/trans.png)
[英]strange string range behavior using NSRegularExpression matches
[英]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.