如何在 awk 中使用空格或制表符分隔字段

如何在 awk 中使用空格或制表符分隔字段

在玩游戏时awk我来执行:

ls -la >> a.txt ; awk {'print $5  $1'} a.txt ;

这将给出如下输出:

53277-rw-------
52347-rw-------

我怎样才能在这两个输出朋友之间留下一个空格?

答案1

只需将行更改为

ls -la >> a.txt ; awk {'print $5 "        " $1'} a.txt ;

这应该打印带有空格的输出。

希望这可以帮助。

编辑:

根据建议麦克尼瑟您可以使用 printf,它将为您提供良好的输出格式

ls -la >> a.txt ; awk {'printf ("%5s\t%s\n", $5, $1)'} a.txt ;

答案2

另一个 awk 特有的技术是使用“输出字段分隔符”

ls -la | awk -v OFS='\t' '{print $5, $1}'

逗号在这里至关重要。

答案3

获取标签的一个简单方法是:

awk {'print $5"\t"$1'}

答案4

要在参数之间放置空格,只需添加" ",例如awk {'print $5" "$1'}

然而不是推荐给解析ls命令的输出,因为它不可靠,并且输出是针对人类的,而不是脚本。因此请使用替代命令,例如findstat

以下是使用 GNU 的示例stat

$ stat -t *
001.txt 23 8 81a4 501 20 1000004 242236402 1 0 0 1460260387 1460260239 1460260239 1460260194 4096
7c1c.txt 21 8 81a4 501 20 1000004 242236595 1 0 0 1460261322 1460260486 1460260486 1460260486 4096

它将打印出机器友好的输出(简洁的形式),这样您就可以得到您所需要的内容。然后使用-c使用特定格式,或使用awkcut获取read正确的列。

检查stat --help更多选项。例如,要打印修改日期,请检查这个例子

相关内容