如何在 Unix 中按顺序仅显示第三个、第一个和第五个逗号之后的文本?

如何在 Unix 中按顺序仅显示第三个、第一个和第五个逗号之后的文本?

我想按给定输入文本的第三个、第一个和第五个逗号之后的顺序显示文本。

做的cut -d ',' -f 3,1,5工作完成了,但没有保持我想要的顺序。相反,它按升序显示文本:1、3、5。

答案1

cut实用程序始终按照与输入中相同的顺序输出字段。它无法对字段重新排序。

使用awk代替cut

awk -F , 'BEGIN { OFS=FS } { print $3, $1, $5 }'

这将按顺序输出第三个、第一个和第五个逗号分隔字段。它对输出和输入使用相同的字段分隔符。

例子:

$ echo "a,b,c,d,e,f" | awk -F , 'BEGIN { OFS=FS } { print $3, $1, $5 }'
c,a,e

如果您正在使用可能包含 CSV 编码字段的真实 CSV 文件,请使用csvcutfromcsvkit:

csvcut -c 5,1,3  file.csv

您还可以使用带有 的列名称csvcut,例如

csvcut -c name,age,address  file.csv

也可以看看csvcut --help

相关内容