データが分散していて、それをマージと呼ばれる1つの場所に結合したい場合があります。 1つのファイルを複数のファイルに分割して、それらを一緒にマージしたい場合や、1つにマージしたい複数のログファイルがある場合があります。 Linuxでは、多数のテキストファイルを1つのファイルにマージするのは簡単です。この記事は、人気のあるLinuxディストリビューションであるUbuntu 20.04でさまざまなコマンドを使用して、データを1か所にマージするさまざまな方法について説明しています。
2つ以上のデータセットを1つのデータセットにマージするプロセスは、データマージと呼ばれます。一度に分析したい多数のファイル、ワークブック、またはデータテーブルに生データを保存する場合、通常、このアプローチが必要です。この記事では、「cat」、「sed」、「merge」コマンドを使用して、Ubuntu(Linux OS)でデータをマージします。
Linuxでデータをマージする
Ubuntuでいくつかのコマンドを使用してデータをマージするためのいくつかの手順を以下に示します:
- catコマンドを使用してデータをマージする
- sedコマンドを使用してデータをマージする
- マージコマンドを使用してデータをマージする
- 「Forループ」を使用してデータをマージする
Catコマンドを使用してデータをマージ
猫は連結の略です。新しいUbuntuバージョンにはプレインストールされていますが、古いバージョンを使用している場合はインストールする必要があります。これは、ファイルからすべてのデータを読み取り、その内容を端末画面に出力する、一般的に使用されるコマンドです。これにより、ファイルの生成、表示、および結合が可能になります。 catコマンドを使用して巨大なテキストファイルの内容を端末に表示すると、端末が混乱し、ナビゲーションが困難になります。
出力
以下のコマンドは、「linux1」と「linux2」のデータをマージし、ファイル名が配置されているのと同じ順序で画面に表示します。
$ cat linux1.txt linux2.txt |
データをマージしてファイルに保存
これで、catコマンドとリダイレクト演算子「>」を使用して、複数のファイルのデータをマージし、別のファイルに保存することもできます。以下のコマンドは、「linux1」と「linux2」のデータをマージし、catコマンドを使用して「merged_linux」に保存します。
$ cat linux1.txt linux2.txt > merged_linux.txt |
ファイルが存在しない場合は、catコマンドが最初にファイルを作成します。最後に追加する代わりに、単一のリダイレクト演算子でファイルが上書きされます。上書きせずにファイルの最後に新しいテキストを追加する場合は、二重のリダイレクト演算子を使用する必要があります。
出力:
Sedコマンドを使用してデータをマージする
Linuxでは、SEDのプリインストールされたコマンドはストリームエディターと省略されますが、インストールされていない場合はインストールでき、検索、検索、置換、挿入、削除などのさまざまなファイル操作を実行できます。 SEDコマンドは、置換または検索と置換に使用される一般的なLinuxコマンドです。 SEDを使用すると、ファイルを開かずにファイルを変更できます。これは、最初にVIエディターで開いてから変更するよりも、ファイル内のファイルを見つけて置き換えるためのはるかに高速な方法です。
通常、テキストの操作と変換に使用されるsedコマンドは、ファイル/データのマージに使用できます。 「>」。以下のコマンドは、「linux1」と「linux2」のデータをマージし、sedコマンドとリダイレクト演算子「>」を使用して「merged_linux」に保存します。
$ sed h linux1.txt linux2.txt > merged_linux1.txt |
出力:
マージコマンドを使用してデータをマージする
マージコマンドは、2つのファイルのデータもマージして新しいファイルに保存しますが、他のマージコマンドとは動作が異なります。 Mergeは、元のファイルと元の2つの変更されたバージョンの3つのファイルを行ごとに比較し、2つの変更セット間の競合を調整して、両方のファイルの変更を表す単一の結合ファイルを作成しようとします。 「マージ」コマンドはプリインストールされていません。以下のコマンドでインストールする必要があります:
$ sudo apt install rcs |
以下のコマンドは、mergeコマンドを使用してlinux1.txtとlinux2.txtを「merged_linux.txt」にマージします。
$ merge merge_linux2.txt linux1.txt linux2.txt |
linux1.txtとlinux2.txtは、「merge_linux2.txt」の異なる部分をマージする2つのファイルです。最初に、「merge_linux2.txt」を作成する必要があります。
出力
「<<<<<<<」と「>>>>>>>」の間に競合があります。
「Forループ」を使用してデータをマージする
「forループ」を使用すると、ファイル名を明示的に指定する必要がなくなります。これは、ファイル名が一貫している場合にのみ機能します。この状況では、ファイル名は次のようにフォーマットされています:linux {1,2} .txt
以下のコマンドは、「linux1」と「linux2」のデータをマージし、forループとリダイレクト演算子「>」を使用して「merged_linux」に格納します。
$ for i in {1,2}; do cat “linux$i.txt” >> merged_linux3.txt; done |
出力:
結論
さまざまな種類のデータを1か所のさまざまな場所に保存したい場合があります。このためには、Linuxでさまざまな方法を使用してデータをマージする必要があります。この記事では、cat、sed、mergeコマンドを使用してUbuntuでデータをマージする4つの方法と、forループについて詳しく説明しました。自分に合わせて簡単に見つけられるアプローチならどれでも従うことができます。