[Linux] sortコマンドの使い方 – テキストファイルの行の並び替え
sort
コマンドは、テキストファイルの行をアルファベット順や数値順に並び替えるために使用されます。
基本的な使い方は、sort ファイル名
で、指定したファイルの内容を標準出力に並び替えて表示します。
オプションとして、-n
で数値順、-r
で逆順、-k
で特定の列を基準に並び替えることができます。
例えば、sort -n -r ファイル名
は数値を降順で並び替えます。
- sortコマンドの基本的な使い方
- 並び替えの基準と順序
- 各種オプションの活用法
- 応用例による実践的な使い方
sortコマンドとは
sort
コマンドは、LinuxやUnix系のオペレーティングシステムで使用される非常に便利なコマンドの一つです。
このコマンドは、テキストファイルの行を特定の基準に従って並び替えるために使用されます。
例えば、アルファベット順や数値順、さらには特定の列を基準にした並び替えが可能です。
sort
コマンドは、データの整理や分析を行う際に非常に役立ちます。
特に、大量のデータを扱う場合や、特定の条件に基づいてデータを抽出したい場合に、その効果を発揮します。
また、sort
コマンドは、他のコマンドと組み合わせて使用することもでき、パイプラインを通じてデータ処理の効率を高めることができます。
これにより、シェルスクリプトやコマンドラインでの作業がよりスムーズになります。
基本的な使い方
ファイルの内容を並び替える
sort
コマンドを使用して、テキストファイルの内容を並び替える基本的な方法は非常にシンプルです。
以下のコマンドを実行することで、指定したファイルの行をアルファベット順に並び替えた結果を表示できます。
sort filename.txt
このコマンドを実行すると、filename.txt
の内容がアルファベット順に並び替えられ、標準出力に表示されます。
標準入力からの並び替え
sort
コマンドは、ファイルだけでなく標準入力からもデータを受け取ることができます。
例えば、以下のようにecho
コマンドとパイプを使って、直接文字列を並び替えることができます。
echo -e "banana\napple\norange" | sort
このコマンドを実行すると、次のように並び替えられた結果が表示されます。
apple
banana
orange
並び替え結果をファイルに保存する
並び替えた結果を新しいファイルに保存したい場合は、リダイレクトを使用します。
以下のコマンドは、filename.txt
の内容を並び替え、その結果をsorted.txt
という新しいファイルに保存します。
sort filename.txt > sorted.txt
このコマンドを実行すると、sorted.txt
に並び替えた結果が書き込まれます。
これにより、元のファイルを保持しつつ、並び替えたデータを別のファイルに保存することができます。
並び替えの基準
アルファベット順で並び替える
sort
コマンドは、デフォルトでアルファベット順に並び替えを行います。
例えば、以下のコマンドを実行すると、fruits.txt
に含まれる果物の名前がアルファベット順に並び替えられます。
sort fruits.txt
このコマンドを実行すると、次のような結果が得られます。
apple
banana
grape
orange
数値順で並び替える
数値を含むデータを並び替える場合、-n
オプションを使用します。
このオプションを指定することで、数値としての大小関係に基づいて並び替えが行われます。
以下のコマンドは、numbers.txt
に含まれる数値を数値順に並び替えます。
sort -n numbers.txt
例えば、numbers.txt
が次のような内容の場合、
10
2
33
4
このコマンドを実行すると、次のように並び替えられます。
2
4
10
33
大文字と小文字を区別しない並び替え
大文字と小文字を区別せずに並び替えたい場合は、-f
オプションを使用します。
このオプションを指定すると、Fruits.txt
の内容が大文字小文字を無視して並び替えられます。
sort -f Fruits.txt
例えば、Fruits.txt
が次のような内容の場合、
banana
Apple
orange
Grape
このコマンドを実行すると、次のように並び替えられます。
Apple
banana
Grape
orange
特定の列を基準に並び替える
sort
コマンドでは、特定の列を基準にして並び替えることも可能です。
-k
オプションを使用することで、指定した列に基づいて並び替えを行います。
以下の例では、data.txt
の2列目を基準に並び替えます。
sort -k 2 data.txt
例えば、data.txt
が次のような内容の場合、
John 25
Alice 30
Bob 20
このコマンドを実行すると、次のように2列目の数値に基づいて並び替えられます。
Bob 20
John 25
Alice 30
並び替えの順序
昇順で並び替える
sort
コマンドは、デフォルトで昇順に並び替えを行います。
昇順とは、アルファベットや数値が小さいものから大きいものへと並ぶ順序のことです。
例えば、names.txt
というファイルに名前が含まれている場合、以下のコマンドを実行すると、名前が昇順に並び替えられます。
sort names.txt
このコマンドを実行すると、次のような結果が得られます。
Alice
Bob
Charlie
David
降順で並び替える
降順で並び替えたい場合は、-r
オプションを使用します。
このオプションを指定することで、逆の順序で並び替えが行われます。
以下のコマンドは、numbers.txt
に含まれる数値を降順に並び替えます。
sort -r numbers.txt
例えば、numbers.txt
が次のような内容の場合、
10
2
33
4
このコマンドを実行すると、次のように降順に並び替えられます。
33
10
4
2
複数のキーで並び替える
複数のキーを使用して並び替えることも可能です。
-k
オプションを複数回指定することで、優先順位を持たせた並び替えができます。
以下の例では、data.txt
の1列目を基準に昇順、次に2列目を基準に昇順で並び替えます。
sort -k 1,1 -k 2,2 data.txt
例えば、data.txt
が次のような内容の場合、
John 25
Alice 30
Bob 20
Alice 25
このコマンドを実行すると、次のように1列目の名前で昇順に並び替えられ、同じ名前の行は2列目の数値で昇順に並び替えられます。
Alice 25
Alice 30
Bob 20
John 25
このように、複数のキーを使うことで、より細かい条件での並び替えが可能になります。
オプションの活用
-nオプション:数値順で並び替える
-n
オプションを使用すると、数値としての大小関係に基づいて並び替えが行われます。
これにより、数値が含まれるデータを正しく並び替えることができます。
以下のコマンドは、numbers.txt
に含まれる数値を数値順に並び替えます。
sort -n numbers.txt
例えば、numbers.txt
が次のような内容の場合、
10
2
33
4
このコマンドを実行すると、次のように並び替えられます。
2
4
10
33
-rオプション:逆順で並び替える
-r
オプションを使用すると、並び替えの順序が逆になります。
これにより、降順での並び替えが可能です。
以下のコマンドは、fruits.txt
に含まれる果物の名前を逆順に並び替えます。
sort -r fruits.txt
例えば、fruits.txt
が次のような内容の場合、
banana
apple
orange
grape
このコマンドを実行すると、次のように降順に並び替えられます。
orange
grape
banana
apple
-kオプション:特定の列を基準に並び替える
-k
オプションを使用することで、特定の列を基準にして並び替えることができます。
以下のコマンドは、data.txt
の2列目を基準に並び替えます。
sort -k 2 data.txt
例えば、data.txt
が次のような内容の場合、
John 25
Alice 30
Bob 20
このコマンドを実行すると、次のように2列目の数値に基づいて並び替えられます。
Bob 20
John 25
Alice 30
-fオプション:大文字小文字を無視して並び替える
-f
オプションを使用すると、大文字と小文字を区別せずに並び替えが行われます。
これにより、異なるケースの文字列を同じように扱うことができます。
以下のコマンドは、Fruits.txt
の内容を大文字小文字を無視して並び替えます。
sort -f Fruits.txt
例えば、Fruits.txt
が次のような内容の場合、
banana
Apple
orange
Grape
このコマンドを実行すると、次のように並び替えられます。
Apple
banana
Grape
orange
-uオプション:重複行を無視して並び替える
-u
オプションを使用すると、重複する行を無視して並び替えを行います。
このオプションを指定することで、ユニークな行だけを取得することができます。
以下のコマンドは、data.txt
の重複行を無視して並び替えます。
sort -u data.txt
例えば、data.txt
が次のような内容の場合、
apple
banana
apple
orange
このコマンドを実行すると、次のように重複行が削除されて並び替えられます。
apple
banana
orange
-tオプション:区切り文字を指定して並び替える
-t
オプションを使用すると、特定の区切り文字を指定して並び替えを行うことができます。
これにより、カンマやタブなどの区切り文字を持つデータを正しく処理できます。
以下のコマンドは、カンマ区切りのdata.csv
を並び替えます。
sort -t ',' -k 2 data.csv
例えば、data.csv
が次のような内容の場合、
John,25
Alice,30
Bob,20
このコマンドを実行すると、2列目の数値に基づいて並び替えられます。
Bob,20
John,25
Alice,30
このように、-t
オプションを使うことで、特定の区切り文字に基づいた柔軟な並び替えが可能になります。
応用例
複数ファイルを同時に並び替える
sort
コマンドは、複数のファイルを同時に並び替えることができます。
複数のファイルを指定すると、全てのファイルの内容が結合され、並び替えられます。
以下のコマンドは、file1.txt
とfile2.txt
を同時に並び替えます。
sort file1.txt file2.txt
このコマンドを実行すると、両方のファイルの内容がアルファベット順に並び替えられ、標準出力に表示されます。
重複行を削除して並び替える
重複行を削除しながら並び替えを行いたい場合は、-u
オプションを使用します。
以下のコマンドは、data.txt
の重複行を削除し、並び替えます。
sort -u data.txt
例えば、data.txt
が次のような内容の場合、
apple
banana
apple
orange
このコマンドを実行すると、次のように重複行が削除されて並び替えられます。
apple
banana
orange
特定の範囲の行を並び替える
特定の範囲の行を並び替えたい場合は、head
やtail
コマンドと組み合わせて使用します。
以下の例では、data.txt
の最初の5行を並び替えます。
head -n 5 data.txt | sort
このコマンドを実行すると、data.txt
の最初の5行がアルファベット順に並び替えられます。
並び替え結果を別のコマンドに渡す
sort
コマンドの結果を別のコマンドに渡すことも可能です。
パイプを使用して、並び替えた結果をwc
コマンドで行数をカウントすることができます。
以下のコマンドは、data.txt
を並び替え、その行数をカウントします。
sort data.txt | wc -l
このコマンドを実行すると、data.txt
の並び替えた結果の行数が表示されます。
並び替え結果を一時ファイルに保存する
並び替えた結果を一時ファイルに保存したい場合は、リダイレクトを使用します。
以下のコマンドは、data.txt
を並び替え、その結果をtemp_sorted.txt
という一時ファイルに保存します。
sort data.txt > temp_sorted.txt
このコマンドを実行すると、temp_sorted.txt
に並び替えた結果が書き込まれます。
これにより、後で結果を確認したり、他の処理に利用したりすることができます。
よくある質問
まとめ
この記事では、Linuxのsort
コマンドを使用してテキストファイルの行を並び替える方法について詳しく解説しました。
基本的な使い方から、並び替えの基準や順序、オプションの活用法、さらには応用例まで幅広く取り上げています。
これを機に、sort
コマンドを活用してデータの整理や分析を行い、効率的な作業を実現してみてください。