SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

業務でラクするためのUNIXテクニック集

cut、head、tail、sort・・・定番のフィルタコマンドを使いこなす!
~業務でラクするためのUNIXテクニック~

第3回 「並べ替え」編

  • X ポスト
  • このエントリーをはてなブックマークに追加

ファイル内文字列のソート

sortコマンド

 sortコマンドは、引数で指定されたファイルや、標準入力を並べ替えます。利用方法は次のようになります。

sortコマンドの基本文法
$ sort [オプション] [ファイル名]

 主なオプションは次のとおりです。

sortコマンドの主なオプション
オプション 説明
-b 先頭の空白を無視する
-d 英文字、数字、空白以外の文字を無視する
-k [数値] [数値]番目の列以降をキーとしてソートする
([数値]を[数値A,数値B]とすると、[数値A]番目~[数値B]番目の列をキーとしてソートする)
([数値]を[列番号.桁数] とすると、ある列の桁数を指定してソートする)
-[数値] [数値]番目の列までをキーとしてソートする
-m 複数のファイルをソートしながらマージする
-n 先頭の文字列を数値として扱う(例:10、101、2 は 2、10、101と並び替える)
-r 結果を降順にする(逆にする)
-t [文字] 列の区切り文字を[文字]で指定した文字にする
-u 重複行を出力しないようにする(「sort | uniq」と同じ)
-z 「\0」(ヌル文字)を区切り文字とする
例)CSV形式のファイルの2列目をソート対象として、昇順で並び替える
$ cat test.csv
1,30,5,6
3,4,5,5
2,6,3,2

$ sort -t , -n -k 2 test.csv
3,4,5,5
2,6,3,2
1,30,5,6

 「,(カンマ)」を区切り文字として、文字列を数値として扱うことで並び替えています。

※注3

POSIXのバージョン(POSIX 1003.1-2001(200112:2001年12月以降))によっては、「-k 数値」オプションを「+数値」と指定するとWarningが出力されます。

$ sort -t, -n +1 test.csv
sort: Warning: "+number" syntax is deprecated, please use "-k number"

ここで、「+1」が、2番目とそれ以降の列をもとにソートするという意味になります。この場合、次のように古いバージョンのPOSIXを指定して回避するか、「-k」オプションを利用してください。

$ export POSIX2_VERSION=199209
$ sort -t, -n +1 test.csv

なお、head -[数値]、またはtail +[数値]なども同様です。

uniqコマンド

 uniqコマンドは、テキストファイル内の重複行を確認できます。利用方法は次のようになります。

uniqコマンドの基本文法
$ uniq [オプション] [ファイル名]

 主なオプションは次のとおりです。

uniqコマンドの主なオプション
オプション 説明
-c 同一行の数も出力する
-d 重複行のみ表示する
-u 重複のない行のみ表示する
例)ファイルの重複行を1行にまとめ、同一行の数を出力
$ cat test.txt
apple
apple
apple
grape
grape
peach

$ uniq -c test.txt
      3 apple ← appleの文字列がファイル中に3つ存在する
      2 grape
      1 peach

次のページ
ファイル内の一部分を出力

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
業務でラクするためのUNIXテクニック集連載記事一覧

もっと読む

この記事の著者

保田和隆(ヤスダカズタカ)

Yasuda Kazutakaネットワーク関連の組み込みソフトウェア開発者。http://uguisu.skr.jp/Windows/

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3643 2009/05/19 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング