我想按给定输入文本的第三个、第一个和第五个逗号之后的顺序显示文本。
做的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 文件,请使用csvcut
fromcsvkit:
csvcut -c 5,1,3 file.csv
您还可以使用带有 的列名称csvcut
,例如
csvcut -c name,age,address file.csv
也可以看看csvcut --help
。