![如何在 awk 中使用空格或制表符分隔字段](https://linux22.com/image/1098027/%E5%A6%82%E4%BD%95%E5%9C%A8%20awk%20%E4%B8%AD%E4%BD%BF%E7%94%A8%E7%A9%BA%E6%A0%BC%E6%88%96%E5%88%B6%E8%A1%A8%E7%AC%A6%E5%88%86%E9%9A%94%E5%AD%97%E6%AE%B5.png)
在玩游戏时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
命令的输出,因为它不可靠,并且输出是针对人类的,而不是脚本。因此请使用替代命令,例如find
或stat
。
以下是使用 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
使用特定格式,或使用awk
或cut
获取read
正确的列。
检查stat --help
更多选项。例如,要打印修改日期,请检查这个例子。