[英]How can I use the cut command in awk?
我想在awk腳本中使用ls -l file_path | cut -d'' - f 1.我需要一個文件的權限,而不是將它用作數組的索引。我該怎么做? 例如:如果命令的輸出是這樣的:-rw-rw-r--我希望能夠做到這樣的事情:Array [-rw-rw-r - ] ++我試圖做這個:
awk '{ system("ls -l " FILENAME "|cut -d ' ' -f 1") }' `find $1 -type f`
獲得權利,但它不起作用。
你不會編寫這樣的代碼,因為它試圖將awk用作shell。 這就像你坐在反鏟上時用螺絲刀挖洞一樣。 相反,你會用GNU工具寫這樣的東西:
find "$1" -type f -print0 | xargs -0 stat -c %A | awk '{arr[$0]++}'
甚至:
find "." -type f -printf '%M\n' | awk '{arr[$0]++}'
感謝@CharlesDuffy在評論中提供錯誤修復和靈感。
而不是使用ls
並解析它的輸出使用stat
與getline
:
awk '{cmd="stat -c %A " FILENAME; cmd | getline perm; close(cmd); arr[perm]++}'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.