插入符正则表达式在 mawk 中不产生任何输出
Caret regexp produces no output in mawk
我正在尝试打印 /usr/bin/
中文件名以 v
开头的所有文件。这行得通,
ls -lA /usr/bin/ | awk '{print }' | grep ^v
奇怪,这个returns没有输出,
ls -lA /usr/bin/ | awk '/^v/ {print }'
.
我不明白其中的区别。我是 运行 Ubuntu 21.10
和 awk -W version
说它在 1.3.4 20200120
.
编辑: 我知道 awk
可能不是完成我想在这里做的事情的最佳方式。但是,这是一个学习 awk 的练习,通过将它与实际输出进行比较来测试我的理解。
两条管道的区别在于,第一个输出第 9 列,然后检查它是否以 v
开头,第二个检查该行是否以 v
开头,将第二个更改为:
$ ls -lA /usr/bin/ | awk ' ~ /^v/ {print }'
写作时:
/pattern/ { ... }
写的一样
[=12=] ~ /pattern/ { ... }
但在你的情况下你想比较第 9 列,所以改为写它。
但您真的不想为此创建管道,如果您的文件包含 space 会怎样?
您可以考虑使用 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
...
我正在尝试打印 /usr/bin/
中文件名以 v
开头的所有文件。这行得通,
ls -lA /usr/bin/ | awk '{print }' | grep ^v
奇怪,这个returns没有输出,
ls -lA /usr/bin/ | awk '/^v/ {print }'
.
我不明白其中的区别。我是 运行 Ubuntu 21.10
和 awk -W version
说它在 1.3.4 20200120
.
编辑: 我知道 awk
可能不是完成我想在这里做的事情的最佳方式。但是,这是一个学习 awk 的练习,通过将它与实际输出进行比较来测试我的理解。
两条管道的区别在于,第一个输出第 9 列,然后检查它是否以 v
开头,第二个检查该行是否以 v
开头,将第二个更改为:
$ ls -lA /usr/bin/ | awk ' ~ /^v/ {print }'
写作时:
/pattern/ { ... }
写的一样
[=12=] ~ /pattern/ { ... }
但在你的情况下你想比较第 9 列,所以改为写它。
但您真的不想为此创建管道,如果您的文件包含 space 会怎样?
您可以考虑使用 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
...