Linux では、テキストファイルを管理および操作することは一般的なタスクです。そのための強力なユーティリティがjoinとsplitです。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を新しいファイル(xaa、xabなど)に分割します。-lフラグで異なる行数を指定したり、-bフラグでファイルサイズで分割したりするなど、この動作をカスタマイズできます。