[英]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.