如何在awk中使用cut命令?

时间:2016-04-17 12:05:24

标签: linux bash shell awk

我想使用ls -l file_path | cut -d' ' -f 1在awk脚本中。我需要文件的权限,而不是用它作为数组的索引。我怎么能这样做? 例如:如果命令的输出是这样的:-rw-rw-r-- 我希望能够做到这样的事情:Array [-rw-rw-r - ] ++ 我试着这样做:

 awk '{ system("ls -l " FILENAME "|cut -d ' ' -f 1") }' `find $1 -type f`

获得权利,但它不起作用。

2 个答案:

答案 0 :(得分:2)

你不会编写类似的代码,因为它试图将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在评论中提供错误修复和灵感。

答案 1 :(得分:1)

而不是使用ls并解析它的输出使用statgetline

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