11. 結合と分割

Linux では、テキストファイルを管理および操作することは一般的なタスクです。そのための強力なユーティリティがjoinsplitです。joinコマンドは共通のフィールドに基づいて 2 つのファイルの行をマージし、splitは大きなファイルをより小さく管理しやすい断片に分割します。

共通フィールドによるファイルの結合

linux join filesを行う必要がある場合、joinコマンドは基本的なツールです。デフォルトでは、同一の最初のフィールドに基づいてソートされた 2 つのファイルの行を結合します。

例えば、マージしたい 2 つのファイルがあると想像してください。

file1.txt
1 John
2 Jane
3 Mary

file2.txt
1 Doe
2 Doe
3 Sue

joinコマンドを使用すると、簡単に結合できます。

$ join file1.txt file2.txt
1 John Doe
2 Jane Doe
3 Mary Sue

ご覧のとおり、ファイルは共通の最初のフィールド(1、2、3)を使用して結合されました。joinが正しく機能するためには、両方のファイルの結合フィールドがソートされている必要があります。

異なる結合フィールドの指定

共通フィールドが最初の列でない場合はどうでしょうか?joinにどのフィールドを使用するかを指示できます。これらのファイルを検討してください。

file1.txt
John 1
Jane 2
Mary 3

file2.txt
1 Doe
2 Doe
3 Sue

ここでは、file1.txtの 2 番目のフィールドとfile2.txtの 1 番目のフィールドで結合する必要があります。コマンドは次のようになります。

$ join -1 2 -2 1 file1.txt file2.txt
1 John Doe
2 Jane Doe
3 Mary Sue

-1 2フラグは最初のファイルのフィールド 2 を、-2 1フラグは 2 番目のファイルのフィールド 1 を指定します。

大容量ファイルの分割

splitコマンドは結合とは逆の操作を行い、大きなファイルをより小さなファイルに分割します。

split somefile

デフォルトでは、このコマンドは 1000 行の制限に達するとsomefileを新しいファイル(xaaxabなど)に分割します。-lフラグで異なる行数を指定したり、-bフラグでファイルサイズで分割したりするなど、この動作をカスタマイズできます。

ログインして学習進捗を保存

サインイン

演習

練習あるのみです!テキストファイルの結合と操作の理解を深めるための実践的なラボを次に示します。

  1. Linux join コマンド:ファイル結合 - このラボでは、joinコマンドへの直接的で実践的な入門を提供し、レッスンで説明したように、共通フィールドに基づいてソートされた 2 つのテキストファイルの行をマージする練習ができます。
  2. 従業員データの処理 - joinawkのような他の強力な Linux コマンドラインユーティリティの知識を適用して、複数のソースからのデータを結合および処理し、現実世界のデータ分析シナリオをシミュレートします。
  3. シーケンス制御とパイプライン - コマンド実行シーケンスの制御、パイプラインの利用、強力なテキスト処理ツールの活用を学ぶことで、コマンドラインの効率とデータ操作スキルを向上させます。これはjoinのデータ結合機能と相補的です。

これらのラボは、テキストファイル操作とデータ結合の概念を実際のシナリオに応用し、Linux コマンドラインツールに対する自信を構築するのに役立ちます。

クイズ

`cat`、`dog`、`cow`という名前のファイルを結合するには、どのコマンドを使用しますか?完全なコマンドを英語で提供してください。コマンドとファイル名は小文字にしてください。