sortコマンド
sortコマンドは思ったより高機能だった。
各行を"文字列"として"昇順に"ソート
$ cat testFile.txt | sort 1000,a,1000,30 20,b,500,1000 300,c,700,200 $
各行を"数値"として"昇順に"ソート
※動作未確認
$ cat testFile.txt | sort -n 300,c,700,200 1000,a,1000,30 20,b,500,1000 $ cat testFile.txt | sort -n 20,b,500,1000 300,c,700,200 1000,a,1000,30 $
各行を"文字列"として"降順に"ソート
$ cat testFile.txt c,700,200 a,1000,30 b,500,1000 $ cat testFile.txt | sort -r c,700,200 b,500,1000 a,1000,30 $
昇順にソートして、同じものをまとめる
$ cat testFile.txt b,500,1000 a,1000,30 c,700,200 b,500,1000 a,200,30 c,700,200 $ cat testFile.txt | sort -u a,1000,30 a,200,30 b,500,1000 c,700,200 $
指定した文字で区切ってフィールド分けして、指定したキーでソート
例)「,」区切りにして、3番目のフィールドを(文字列の)キーとして"昇順に"ソートする場合
$ cat testFile.txt b,500,1000 a,1000,30 c,700,200 $ cat testFile.txt | sort -t, -k 3 b,500,1000 c,700,200 a,1000,30 $
※文字列なので、「200」より先に「1000」が来る(1文字目で優先される)
指定した文字で区切ってフィールド分けして、指定したキーでソート
例)「,」区切りにして、3番目のフィールドを(文字列の)キーとして"降順に"ソートする場合
$ cat testFile.txt | sort -t, -k 3r a,1000,30 c,700,200 b,500,1000 $
指定した文字で区切ってフィールド分けして、指定したキーでソート
例)「,」区切りにして、3番目のフィールドを(数値の)キーとしてソートする場合
$ cat testFile.txt | sort -t, -k 3n a,1000,30 c,700,200 b,500,1000 $
指定したキーでソートしつつ、そのキーでまとめる
ソートしてからまとめるのではなく、以下のように先に3番目のキーが同じものの中で1番最初に出てきた行だけにまとめた後に、指定したキーでソートしている
$ cat testFile.txt b,600,1000 a,1000,30 c,700,200 b,500,1000 a,200,30 c,700,200 $ cat testFile.txt | sort -t, -k 3 -u b,600,1000 c,700,200 a,1000,30 $