Movatterモバイル変換


[0]ホーム

URL:


hydroculのメモ >コマンドの使い方(Linux) >sort コマンド

sort コマンド2016/10/11

行を並び替えができるコマンド。

foo.txt が以下の内容の場合、

$ cat foo.txt344111113333344aabcabac

sortコマンドを使うと以下のように辞書順にソートしてくれる。

$ sort foo.txt111113333334444aababcac

-n オプションを付けると数字は数値としてソートしてくれる。数字でないものは辞書順になるみたい。

$ sort -n foo.txtababcac344a113344111333

1つ以上のスペースで区切られた複数列のデータの場合にソートキーとなる列を指定してのソートもできる。

以下のような2列のデータがあるとして、

$ cat foo.txt1 32 443 1114 115 3336 337 48 4a9 abc10 ab11 ac

-k2 を付ければ2列目でソートできる。

$ sort -k2 foo.txt4 113 1111 36 335 3337 42 448 4a10 ab9 abc11 ac

-nk2 または-k2n とすれば2列目を数値としてソートする。

$ sort -nk2 foo.txt10 ab11 ac9 abc1 37 48 4a4 116 332 443 1115 333$ sort -k2n foo.txt10 ab11 ac9 abc1 37 48 4a4 116 332 443 1115 333

-k2,2n -k1,1n とすると、2列目を数値としてソートして、2列目の数値が同じ場合は1列目を数値としてソートする。

$ sort -k2,2n -k1,1n foo.txt9 abc  # <-10 ab  # <- ここは1列目でソート11 ac  # <-1 37 48 4a4 116 332 443 1115 333

-k2,2n -k1,1 とすると、1列目は数値ではなく、辞書順でソートする。

$ sort -k2,2n -k1,1 foo.txt10 ab  # <-11 ac  # <- 10,11,9 の順に辞書順9 abc  # <-1 37 48 4a4 116 332 443 1115 333

-k2,2n -k1,1nr とすると、1列目は逆順にソートする。

$ sort -k2,2n -k1,1nr $p/tmp/test.txt11 ac  # <-10 ab  # <- 11 から 9の順にソート9 abc  # <-1 38 4a7 44 116 332 443 1115 333

列は1つ以上のスペースで区切られるようだが、これは-t オプションで変更できる。

ファイル名を指定しないか- とすると、標準入力を読み込んでソートする。以下の3つは同じになる。

$ sort foo.txt$ cat foo.txt | sort$ cat foo.txt | sort -

インストール2016/03/17

Coreutilsというパッケージに入っているので、CentOSにもUbuntuにも始めから入っている。

オプション2016/06/24

-c
すでにソートされているかどうかをチェックする。チェックのみでソートはしない。ソートされていなければ終了コード1を返す。ソートされていれば0を返す。
--help
ヘルプ表示
-t
列の区切り文字を指定する。デフォルトはスペース。-t, でコンマ区切りになる。bashやzshでは-t $'\t' でタブ区切りのファイルを処理できるようになる。Ubuntuの/bin/sh の実態はdashで、dashではこのタブの書き方ができない。
--version
バージョン表示

-- というパラメータを渡すとそれ以降のパラメータをオプションではなくファイル名とみなしてくれるので、- で始まるファイル名を扱いたい場合に使うとよい。

ソート方法に関するオプション2015/09/26

-f
大文字小文字を区別しない。
-k 列番号
どの列で並び替えるかを指定する。-k 6,7 は、6列目で比較し、6列目が同じ場合は7列目で比較する。列番号は1から始まる。-k 6 とすると、6列目で比較し、同じ場合は7列目で比較し、また同じであれば8列目で比較し、というふうに最後の列まで順番に比較する。
-n
列のデータを数字とみなして並び替える。
-r
逆順に並び替える。
-R
ランダムな順番にソートする。

HOWTO

日本語を含むソートをするには2014/11/19

漢字やひらがな/カタカナなどが含まれる日本語テキストは、うまくソートできない場合があるみたいで、その場合は環境変数LC_ALL=C またはLANG=ja_JP.UTF-8 を設定するとよいみたい。

cat foo.txt | LC_ALL=C sort

uniqコマンドでも同様に、行の中に漢字やひらがな/カタカナなどが含まれるとうまくできない場合があるみたい。

LC_ALL=C を付けると処理速度が速くなる、という効果もあるみたい。

ランダムな順番にソートをするには2017/01/16

ランダムなのだからソートという言い方でいいのかよくわからないが。

-Rオプションを使うと、何順でもない順序に並び替わる。同じデータがある場合はそれらがバラバラにはならず、ひとまとめになる。ランダムなので実行するごとに順序は変わる。

GNU のsortコマンドであればよいが、そうでない環境では-R オプションがない場合があるみたい。

shufというコマンドもランダムに並び替えるコマンドだが、同じデータが複数あるとそれがランダムにばらばらの場所になる。

重複している数の多い順にソートするには2014/11/14

uniqコマンドの例を参照。

ファイルをタイムスタンプの順にソートして表示するには2015/04/01

参考

このサイトは筆者(hydrocul)の個人メモの集合です。すべてのページは永遠に未完成です。
スポンサーリンク

[8]ページ先頭

©2009-2025 Movatter.jp