[英]Caret regexp produces no output in mawk
我正在尝试打印/usr/bin/
中文件名以v
开头的所有文件。 这行得通,
ls -lA /usr/bin/ | awk '{print $9}' | grep ^v
令人惊讶的是,这没有返回 output,
ls -lA /usr/bin/ | awk '/^v/ {print $9}'
ls -lA /usr/bin/ | awk '/^v/ {print $9}'
。
我不明白其中的区别。 我正在运行Ubuntu 21.10
和awk -W version
,说它在1.3.4 20200120
上。
编辑:我知道awk
可能不是完成我想要在这里做的事情的最佳方式。 但是,这是一个学习 awk 的练习,通过将其与真实的 output 进行比较来测试我的理解。
两个管道之间的区别在于,第一个输出第 9 列,然后检查它是否以v
开头,第二个检查该行是否以v
开头,将第二个更改为:
$ ls -lA /usr/bin/ | awk '$9 ~ /^v/ {print $9}'
写作时:
/pattern/ { ... }
和写作一样
$0 ~ /pattern/ { ... }
但是在您的情况下,您想比较第 9 列,因此请改写。
但是您真的不想为此创建管道,如果您的文件包含空格会发生什么?
您可以考虑改用find
或 glob:
$ printf '%s\n' /usr/bin/v*
/usr/bin/vi
/usr/bin/view
...
或者
$ find /usr/bin -name 'v*' -print
/usr/bin/vi
/usr/bin/view
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.