簡體   English   中英

插入符號正則表達式在 mawk 中不產生 output

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM