Unixでは、3番目、1番目、5番目のコンマの後のテキストのみを順番に表示する方法は?

Unixでは、3番目、1番目、5番目のコンマの後のテキストのみを順番に表示する方法は?

与えられた入力テキストの3番目、1番目、5番目のカンマの後の順序でテキストを表示したいと思います。

仕事をしましたが、cut -d ',' -f 3,1,5好きな順序を守りませんでした。代わりに、テキストを昇順(1、3、5)で表示します。

答え1

ユーティリティcutは常に入力と同じ順序でフィールドを出力します。フィールドを並べ替えることはできません。

awk代わりに使用してくださいcut

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

これにより、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次のようにします。csvkit:

csvcut -c 5,1,3  file.csv

csvcutたとえば、列名を使用することもできます。

csvcut -c name,age,address  file.csv

また、見ることができますcsvcut --help

関連情報