linuxコマンドでcsvをソートや重複の排除を行う

Share on:

概要

コードでソートをしていて、速度が出ないときの代替え手段として

あとは、個人的に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