linuxコマンドでcsvをソートや重複の排除を行う
概要
コードでソートをしていて、速度が出ないときの代替え手段として
あとは、個人的にlinuxコマンドをそこまで知らないので練習のため・・・
内容
csvをソートする
sort -t, -k 1n target.csv
オプション | 役割 |
---|---|
-t | 区切り文字を設定できる。今回はカンマなので-t, としている |
-k | ソートで使う列を指定する。 nをつけると数値、rを使うと降順で並べられる。 |
awkでcsvの特定列の重複を削除する
やり方
awk -F, '!val[$1]++' # 一列目を対象に二回目以降の項目を削除できる
uniqでも同じことができるが、処理量が多い場合awkの方が高速のためこちらを採用
echo "1\n2\n3\n1\n1"
1
2
3
1
1
echo "1\n2\n3\n1\n1" | awk -F, '!val[$1]++'
1
2
3
特定行を省きたい
やり方
awk 'BEGIN {FS=",";OFS=","} {print $1,$2}'
- BEGIN
- FS:ファイルセパレーターを定義
- OFS:出力する際のセパレーターを定義
例)
cat target.csv
1,100,1001
2,100,1002
1,200,2001
3,200,2003
3,500,5003
awk 'BEGIN {FS=",";OFS=","} {print $1,$2}' target.csv
1,100
2,100
1,200
3,200
3,500