はじめに
この実験では、Linux の汎用的な sort
コマンドを調べます。これは、テキストデータを整理・整列するための強力なユーティリティです。学校管理者として、sort
コマンドのさまざまなオプションを使って、効率的に生徒情報を管理・分析します。この実践的な経験は、Linux コマンドラインツールを使って現実世界のシナリオでデータを操作する方法を理解するのに役立ちます。
💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください
この実験では、Linux の汎用的な sort
コマンドを調べます。これは、テキストデータを整理・整列するための強力なユーティリティです。学校管理者として、sort
コマンドのさまざまなオプションを使って、効率的に生徒情報を管理・分析します。この実践的な経験は、Linux コマンドラインツールを使って現実世界のシナリオでデータを操作する方法を理解するのに役立ちます。
まずは、生徒名のリストをアルファベット順にソートしましょう。これは、クラスの出席表を作成したり、生徒記録を整理したりする際の一般的なタスクです。
まず、生徒リストの内容を見てみましょう。
cat ~/project/students.txt
何らかの順序なしで生徒名のリストが表示されるはずで、以下のようになります。
David Lee
Alice Johnson
Charlie Brown
Bob Smith
Eve Wilson
次に、sort
コマンドを使ってこれらの名前をアルファベット順に並べましょう。
sort ~/project/students.txt
このコマンドにより、ソートされた生徒名のリストが画面に表示されます。出力は以下のようになるはずです。
Alice Johnson
Bob Smith
Charlie Brown
David Lee
Eve Wilson
sort
コマンドは、既定で行をアルファベット順にソートします。各行の先頭から文字を 1 文字ずつ比較します。これが、「Alice」が「Bob」より前に来る理由です。
何も出力が見えない場合は心配しないでください!コマンドは機能していますが、結果がターミナルに表示されただけです。ソートされたリストを新しいファイルに保存したい場合は、出力リダイレクト演算子 >
を次のように使うことができます。sort ~/project/students.txt > ~/project/sorted_students.txt
次に、生徒を年齢順にソートしましょう。これは、年齢に応じたグループや活動に生徒を編成する際に役立ちます。
まず、データを見てみましょう。
cat ~/project/student_ages.txt
年齢付きの生徒のリストが以下のように表示されます。
David Lee:21
Alice Johnson:18
Charlie Brown:19
Bob Smith:20
Eve Wilson:18
このリストを年齢順にソートするには、sort
に数値として扱うように指示する -n
オプションを使用します。
sort -n -t: -k2 ~/project/student_ages.txt
このコマンドを分解してみましょう。
-n
:このオプションは sort
に数値ソートを行うように指示します。-t:
:これは、フィールドがコロンで区切られていることを指定します。-k2
:これは、sort
に 2 番目のフィールド(年齢)をソートキーとして使用するように指示します。これにより、最年少から最年長までソートされた生徒のリストが表示されます。
Alice Johnson:18
Eve Wilson:18
Charlie Brown:19
Bob Smith:20
David Lee:21
-n
オプションを使用しない場合、sort
は年齢を文字列として扱い、誤った順序になります(例えば 18, 19, 20, 21, 3 のように)。-n
オプションは適切な数値順序を保証します。
次に、生徒の成績を降順にソートしましょう。これは、生徒をランキング付けしたり、トップパフォーマーを特定したりする際によく使われます。
まず、現在のリストを見てみましょう。
cat ~/project/student_grades.txt
以下のようなものが表示されるはずです。
David Lee:87
Alice Johnson:92
Charlie Brown:95
Bob Smith:88
Eve Wilson:91
成績を高い順から低い順にソートするには、逆順の -r
オプションと数値ソートの -n
オプションを併用します。
sort -nr -t: -k2 ~/project/student_grades.txt
このコマンドの各部分の機能を説明します。
-n
:数値ソートを行う-r
:ソート順を逆にする(昇順ではなく降順)-t:
:フィールドがコロンで区切られていることを指定する-k2
:2 番目のフィールド(成績)をソートキーとして使用するこのコマンドにより、生徒の成績が高い順から低い順に表示されます。
Charlie Brown:95
Alice Johnson:92
Eve Wilson:91
Bob Smith:88
David Lee:87
-r
オプションは、多くの現実世界のシナリオ(ランキング付け、トップパフォーマーの特定、タスクの優先順位付けなど)で一般的な、最初に高い値を見たい場合に特に役立ちます。
このステップでは、名前、年齢、成績を含むより複雑な生徒記録をソートします。これは、包括的な生徒データベースを扱う際の一般的なシナリオです。
まず、データを見てみましょう。
cat ~/project/student_records.txt
各行には、コロンで区切られた生徒の名前、年齢、成績が含まれているはずで、以下のようになります。
David Lee:21:87
Alice Johnson:18:92
Charlie Brown:19:95
Bob Smith:20:88
Eve Wilson:18:91
このファイルを年齢(2 番目のフィールド)でソートし、年齢が同じ場合は成績(3 番目のフィールド)でソートするには、以下のコマンドを使用します。
sort -t: -k2n -k3nr ~/project/student_records.txt
このコマンドの各部分の意味を説明します。
-t:
は、フィールドがコロンで区切られていることを指定します。-k2n
は、2 番目のフィールド(年齢)を数値でソートします。-k3nr
は、その後、3 番目のフィールド(成績)を数値で逆順にソートします。これにより、主に年齢(昇順)で、年齢が同じ場合は成績(降順)でソートされた生徒記録が表示されます。
Alice Johnson:18:92
Eve Wilson:18:91
Charlie Brown:19:95
Bob Smith:20:88
David Lee:21:87
このような複数キーのソートは、複数の基準に基づいてデータを整理する必要がある場合に非常に役立ちます。この場合、私たちは生徒を年齢でグループ化し、各年齢グループ内で彼らを成績でランキング付けしています。
時々、生徒記録にはデータ入力エラーや複数回の提出などの理由で重複が含まれる場合があります。ここでは、これらの重複を削除する方法を学びましょう。
まず、重複の可能性のあるファイルを見てみましょう。
cat ~/project/student_clubs.txt
以下のようなものが表示されるかもしれません。
Alice Johnson:Chess Club
Bob Smith:Debate Team
Charlie Brown:Chess Club
David Lee:Science Club
Eve Wilson:Debate Team
Alice Johnson:Chess Club
Bob Smith:Science Club
このリストをソートして重複を削除するには、-u
オプションを使用します。
sort -u ~/project/student_clubs.txt
このコマンドにより、重複のない生徒のクラブ所属のソート済みリストが表示されます。
Alice Johnson:Chess Club
Bob Smith:Debate Team
Bob Smith:Science Club
Charlie Brown:Chess Club
David Lee:Science Club
Eve Wilson:Debate Team
-u
オプションは、sort
に同じ行の最初のもののみを出力するように指示します。言い換えると、ソート後に重複する行を削除します。これは、重複のないエントリのリストを作成する必要がある場合や、冗長なデータを特定して削除しようとしている場合に特に役立ちます。
「Bob Smith」が 2 回表示されるのは、彼が 2 つの異なるクラブに所属しているためで、全行が異なるため、これらは重複とは見なされません。
この実験では、sort
コマンドを使ってさまざまな種類の生徒データを整理する方法を学びました。いくつかの便利なオプションを調べました。
-n
を使った数値ソート-r
を使った逆順ソート-k
を使った複数のフィールドによるソート-t
を使ったカスタムフィールド区切り文字の指定-u
を使った重複削除他にも便利な sort
オプションには以下のものがあります。
-f
:ソート時に大文字小文字を区別しない-b
:先頭の空白を無視する-c
:入力が既にソートされているかどうかをチェックする-o
:標準出力ではなく、ファイルに出力するこれらのスキルは、教育環境に限らず、さまざまな職場のコンテキストでデータを管理および分析する際に非常に役立ちます。