2012-08-07

linuxのsortコマンドで列(カラム)を指定してソートする

元のテキストの中身はこんな状態
cat hoge.txt 
1 1 a
3 10 c
2 2 b
オプションを何も指定せずにソートすると第一カラムを文字列としてソートする
sort hoge.txt 
1 1 a
2 2 b
3 10 c
オプションを-k 2としてソートすると、第二カラムを文字列としてソートする
sort hoge.txt -k 2
1 1 a
3 10 c
2 2 b
-nをつけてあげると数値としてソートするので2と10の順番が入れ替わる
sort hoge.txt -k 2 -n
1 1 a
2 2 b
3 10 c
第三カラムのソートの場合は-k 3でOK
sort hoge.txt -k 3
1 1 a
2 2 b
3 10 c
ヘルプの中身はこんな感じ
使用法: sort [オプション]... [ファイル]...
Write sorted concatenation of all FILE(s) to standard output.

長いオプションに必須の引数は短いオプションにも必須です.
Ordering options:

  -b, --ignore-leading-blanks  ignore leading blanks
  -d, --dictionary-order      consider only blanks and alphanumeric characters
  -f, --ignore-case       fold lower case to upper case characters
  -g, --general-numeric-sort  一般的な数値の大小によって比較
  -i, --ignore-nonprinting    表示可能文字のみを比較して 並び替え
  -M, --month-sort       月名でソートを行う. 月名以外は JAN より小さい
  -n, --numeric-sort       文字列を数値の大小によって比較
  -r, --reverse        比較結果を反転
Other options:

  -c, --check      check whether input is sorted; do not sort
  -k, --key=POS1[,POS2]     start a key at POS1, end it at POS2 (origin 1)
  -m, --merge      merge already sorted files; do not sort
  -o, --output=FILE     write result to FILE instead of standard output
  -s, --stable      stabilize sort by disabling last-resort comparison
  -S, --buffer-size=SIZE    use SIZE for main memory buffer
  -t, --field-separator=SEP  use SEP instead of non-blank to blank transition
  -T, --temporary-directory=DIR  use DIR for temporaries, not $TMPDIR or /tmp;
         multiple options specify multiple directories
  -u, --unique      with -c, check for strict ordering;
         without -c, output only the first of an equal run
  -z, --zero-terminated     文字列の最後に改行でなくヌル文字を付加
      --help  この使い方を表示して終了
      --version  バージョン情報を表示して終了

POS の書式は F[.C][OPTS] であり, F にはフィールド番号, C にはフィールド内の
文字の位置を指定します. OPTS には「並び替えオプション」の中の 1つ以上の文字が
指定され, そのキーに対して全体の「並び替えオプション」よりも優先されます.
キーが指定されなければ, キーとして行全体が使われます.

SIZE の後には次の複数指定可能な接尾辞を指定します.
メモリの % 1%, b は 1, K は 1024 (標準) のように M, G, T, P, E, Z, T.

*** 警告 ***
環境変数によって指定されたロカールで並び替えの順番が変わります.
本来のバイト単位の数値で昔ながらの並び替え順にしたいならば LC_ALL=C を指定.

0 件のコメント:

コメントを投稿