与えられた入力テキストの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
。