如何更改给定命令中的字段顺序?
以 的输出为例ls -l
。默认情况下,文件名显示为输出的最后一个字段。我可以将该输出传输到什么以使文件名成为显示的第一个字段?
我最初的想法是使用 cut 命令,但无论字段传递给 -f 选项的顺序如何,它们总是按原始顺序输出。
注意:我仅用作ls -l
一个简单的示例,但我想找到一个通用的习惯用法,可用于任何在列中输出数据的命令。如果它也可以应用于分隔数据,那就太好了。
答案1
对于固定数量的字段,您可以使用awk
,例如交换第二个和第四个字段:
command | awk '{ t = $2; $2 = $4; $4 = t; print }' | column -t
但不幸的是没有固定数量的字段(用空格分隔),因为文件名也可以包含空格:这就是不鼓励ls -l
解析输出的原因。ls -l