前書き
このガイドでは、デリミタ付きファイルと他のコマンドの出力からデータをソートする方法を説明します。
このタスクを実行するために使用するコマンドが「ソート」と呼ばれていることに驚くことはありません。 この記事では、sortコマンドの主要なスイッチがすべて提供されます。
サンプルデータ
ファイル内のデータは、何らかの方法で区切られていればソートすることができます。
例えば、去年のスコットランドプレミアリーグからの最終リーグテーブルをとり、そのデータを "spl"というファイルに保存しましょう。
1つのクラブとそのクラブのデータを各行にカンマで区切って、次のようにデータファイルを作成できます。
チーム | 得点 | 目標 | ポイント |
---|---|---|---|
ケルト語 | 93 | 31 | 86 |
アバディーン | 62 | 48 | 71 |
ハーツ | 59 | 40 | 65 |
セントジョンストン | 58 | 55 | 56 |
マザーウェル | 47 | 63 | 50 |
ロス郡 | 55 | 61 | 48 |
インヴァネス | 54 | 48 | 52 |
ダンディー | 53 | 57 | 48 |
パートディック | 41 | 50 | 46 |
ハミルトン | 42 | 63 | 43 |
キルマーノック | 41 | 64 | 36 |
ダンディー・ユナイテッド | 45 | 70 | 28 |
ファイル内のデータを並べ替える方法
そのテーブルから、あなたはセルティックがリーグを獲得し、ダンディー・ユナイテッドが最後に来たことが分かります。 あなたがダンディー・ユナイテッドのファンなら、自分の気持ちを良くしたいかもしれないし、得点でソートすることでこれを行うことができます。
これを行うには、次のコマンドを実行します。
sort -k2 -t、spl
今度は次のようになります:
- パートディック
- キルマーノック
- ハミルトン
- ダンディー・ユナイテッド
- マザーウェル
- ダンディー
- インヴァネス
- ロス郡
- セントジョンストン
- ハーツ
- アバディーン
- ケルト語
結果がこの順序になっているのは、列2が目標得点列であり、ソートが最低から最高になるためです。
-kスイッチを使用すると、並べ替える列を選択できます。また、-tスイッチを使用すると、区切り文字を選択できます。
ダンディー・ユナイテッドのファンは、自分自身を本当に幸せにするために、次のコマンドを使用して列4でソートできます。
sort -k4 -t、spl
ダンディー・ユナイテッドがトップで、ケルトは最下位にいる。
もちろん、これはセルティックとダンディーの両方のファンを本当に不幸にさせるでしょう。 物事を正しく置くために、次のスイッチを使って逆の順序で並べ替えることができます:
sort -k4 -t、-r spl
やや奇妙なスイッチでは、ランダムに並べ替えることができ、実際にはデータの列を混乱させるだけです。
次のコマンドを使用してこれを行うことができます:
sort -k4 -t、-R spl
-rスイッチと-Rスイッチを混在させると、実際の問題を引き起こす可能性があります。
sortコマンドは日付を月順に並べ替えることもできます。 次の表を見てください:
月 | 使用されたデータ |
---|---|
1月 | 4G |
2月 | 3000K |
行進 | 6000K |
4月 | 100M |
5月 | 5000M |
六月 | 200K |
7月 | 4000K |
8月 | 2500K |
9月 | 3000K |
10月 | 1000K |
11月 | 3G |
12月 | 2G |
上記の表は、年の月とモバイルデバイスで使用されるデータの量を表しています。
次のコマンドを使用して日付をアルファベット順に並べ替えることができます。
sort -k1 -t、datausedlist
また、次のコマンドを使用して月単位でソートすることもできます。
sort -k1 -t、-M datausedlist
明らかに上記の表は既に月順に表示されていますが、リストにランダムに入力されていれば、単純なソート方法になります。
2番目の列を見ると、すべての値が人間が判読可能な形式で表示され、並べ替えが簡単ではないように見えますが、sortコマンドは次のコマンドを使用して、
sort -k2 -t、-h datausedlist
他のコマンドから渡されたデータをソートする方法
ファイル内のデータのソートは便利ですが、sortコマンドを使用して他のコマンドの出力をソートすることもできます:
たとえば、lsコマンドを見てみましょう。
ls -lt
上記のコマンドは、各ファイルを1行のデータとして返し、次のフィールドを列に表示します。
- 許可
- ノードカウント
- ユーザー名
- グループ名
- サイズ
- 最終アクセス日
- ファイル名
次のコマンドを実行して、ファイルサイズでリストを並べ替えることができます。
ls -lt | ソート-k5
結果を逆の順序で取得するには、次のコマンドを使用します。
ls -lt | sort -k5 -r
sortコマンドは、システム上で実行中のプロセスを一覧表示するpsコマンドと組み合わせて使用することもできます。
たとえば、システムで次のpsコマンドを実行します。
ps -eF
上記のコマンドは、システム上で現在実行されているプロセスに関する多くの情報を返します。
これらの列の1つはサイズであり、どのプロセスが最大であるかを知りたい場合があります。
このデータをサイズ別にソートするには、次のコマンドを使用します。
ps -eF | ソート-k5
概要
sortコマンドにはそれほど多くはありませんが、他のコマンドからの出力を意味のある順序に並べ替えるとき、特にコマンドに独自の並べ替えスイッチがないときは非常に便利です。
詳細については、sortコマンドのマニュアルページを参照してください。