皆さんこんにちは!
Linuxのコマンドを使いこなしていますか?
Linuxには便利なコマンドが多数存在します。
サーバー管理に欠かせないコマンドの中から今回は、sort(ソート)コマンドをご紹介いたします。
sortコマンドとは?
sortコマンドの使い方
sortコマンドを使ってみよう!
sortコマンドの主なオプションたち
データを文字ではなく、数値として並び変える 【-n オプション】
降順にデータを並び変える 【-r オプション】
キーを指定して並び変える【-k と -t オプション】
sortコマンドの結果をファイルに出力
まとめ
sortコマンドとは?
sortコマンドとは、テキストファイルの中身を行単位で並び変えたいときに利用されるLinuxコマンドです。
テキストファイルだけではなく、CSVファイルにも対応しているので比較的便利なコマンドといえるでしょう!
また、パイプ(|)で他のコマンドの出力結果をさらにソートする際に利用されたりもします。
それでは、sortコマンドの使い方について具体的にみていきましょう!
sortコマンドの使い方
sortコマンドの基本書式は、以下の通りです。
$sort [オプション] ファイル名
このように単純な記述でファイルの文字列を並びかえることができ、便利ですね!!
ただし、sortコマンドでは左側にある文字からソートをかけるため、数値順に並びませんので要注意です!
sortコマンドを使ってみよう!
それでは、sortコマンドを使用してみましょう!
今回は「example.txt」の内容をソートしてみましょう!
まず、「example.txt」の内容は下記のようなものです。
$cat example.txt 32 1 111 567 22222 9
それでは、早速上記のファイルをsortコマンドでソートしてみましょう。
実行結果
$sort example.txt 1 111 22222 32 567 9
「あれ?全然ソートされてないよ?」
と感じられるかもしれませんが、先ほどの通りsortコマンドは左側にある文字からソートをかけるため、数値順に並びません。
「じゃあ使えないな」と感じるかもしれませんが、「オプション」を利用することで文字としてだけではなく数値として降順に並び変えたりなどいろいろな並び変えることができるようになります。
では、そんな便利なオプションたちをみていきましょう!
sortコマンドの主なオプションたち
オプション | 説明 |
---|---|
-n | データを文字ではなく、数値として並び変える |
-r | 降順にデータを並び変える |
-u | 重複を排除して並び変える |
-f | 大文字と小文字を区別なく並び変える |
-b | 先頭に挿入されている空白を無視して並び変える |
-k | キーを指定して並び変える(下記「-t」と併用) |
-t | 区切りの文字を指定する(下記「-k」と併用) |
ここからいくつか具体的に使用法をみてみましょう!
データを文字ではなく、数値として並び変える 【-n オプション】
こちらのオプションを利用することで、データを数値として処理できるようになります。
ですので、先ほどのファイルも数値順に違和感なくソートできるはずです!
$cat example.txt 32 1 111 567 22222 9
それでは、先ほどファイルを用いて見ていきましょう。
実行結果
$sort -n example.txt 1 9 32 111 567 22222
これで数値の並び変えはバッチリですね!
降順にデータを並び変える 【-r オプション】
もうすでにお気付きかと思いますが、sortコマンドは標準で「昇順」でのソートとなっています。
しかし、「降順」でソートしたいときもあるかと思います。
そんなときはこの「-r」オプションをご利用ください!
今回は、先ほど取り上げた「-n」コマンドと併用していこうと思います!
$sort -nr example.txt 22222 567 111 32 9 1
こちらのコマンドも使いどころがありそうですね!
キーを指定して並び変える【-k と -t オプション】
一見何をいっているか分かりにくいかと思いますがこのコマンドがよく使われるパターンを用意しました!
$cat example_2.csv OSAKA,M,20,STUDENT TOKYO,F,26,STUDENT KANAGAWA,F,23,STUDENT KYOTO,M,21,STUDENT OKINAWA,F,42,STUDENT NAGANO,M,19,STUDENT
こちらはCSVファイルです!
このCSVファイルをソートする際にこのコマンドがかなり役に立ちますのでぜひマスターしてみてください!
ただし、基本の書式とは少し書き方が違うため注意が必要です。
基本書式
$ sort -k 並べ替えに使う列番号 -t 区切りに使うキー文字 ファイル名
今回は例として2列目を並び変えたいと思います!
$sort -k 2 -t , example_2.csv TOKYO,F,26,STUDENT KANAGAWA,F,23,STUDENT OKINAWA,F,42,STUDENT OSAKA,M,20,STUDENT KYOTO,M,21,STUDENT NAGANO,M,19,STUDENT
できました!
また、数値を扱いたい場合は列番号の後ろに「n」をつけると数値として処理できます。
$sort -k 3n -t , example_2.csv NAGANO,M,19,STUDENT OSAKA,M,20,STUDENT KYOTO,M,21,STUDENT KANAGAWA,F,23,STUDENT TOKYO,F,26,STUDENT OKINAWA,F,42,STUDENT
CSV作成の際にぜひお役立てください!!
sortコマンドの結果をファイルに出力
ここまで、ご紹介してきたsortコマンドはコマンドライン上にのみ表示され、ファイルの中身が書き変わるわけではありません!
そこで、大量のファイルを処理したい場合や出力結果がほしい場合は「リダイレクト」でファイルを生成しましょう!
リダイレクトの基本書式
$sort 並び変え元のファイル > 出力先ファイル
つまり、「example.txt」を数値としてソートして「example_sort.txt」へ出力する場合はこのようになります!
$sort -n example.txt > example_sort.txt
まとめ
今回は、sortコマンドについてご紹介させていただきました。
sortコマンドには、さまざまなオプションがあり、使いこなすことでかなり便利にサーバーを管理できるようになりそうですね。
今後もLinuxコマンドをご紹介していく予定ですので、ぜひご覧くださいね!