簡體   English   中英

如何在awk中使用cut命令?

[英]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並解析它的輸出使用statgetline

awk '{cmd="stat -c %A " FILENAME; cmd | getline perm; close(cmd); arr[perm]++}' 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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