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

Tud*_*ica 1 text-processing cut

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

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

Kus*_*nda 8

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

使用awk代替cut

awk -F , 'BEGIN { OFS=FS } { print $3, $1, $5 }'
Run Code Online (Sandbox Code Playgroud)

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

例子:

$ echo "a,b,c,d,e,f" | awk -F , 'BEGIN { OFS=FS } { print $3, $1, $5 }'
c,a,e
Run Code Online (Sandbox Code Playgroud)

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

csvcut -c 5,1,3  file.csv
Run Code Online (Sandbox Code Playgroud)

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

csvcut -c name,age,address  file.csv
Run Code Online (Sandbox Code Playgroud)

也可以看看csvcut --help