配列を行列に結合 - セル間に区切り記号を追加する

配列を行列に結合 - セル間に区切り記号を追加する

両方のファイルをマージし、両方のファイルの2番目の列を追加したいと思います。

ファイル1.

001    A
002    B
003    C
004    D

ファイル2.

002    D
003    D
005    E
006    F

以下のようにファイル3にマージする必要があります。

001    A
002    B D
003    C D
004    D
005    E
006    F

私はandreatshが提案したこのコマンドを試しました。AWKを使用して2つのファイルをマージし、2番目の列を追加します。:

$ awk '{ z[$1]=z[$1]$2 } END { for (i in z) print i, z[i] }' file1  file2
002 BD
003 CD
004 D

など...

かなり似ていますが、文字間にスペースを追加するにはどうすればよいですか?

たとえば、最初の行に「BD」を使用する代わりに「BD」を使用します。

ベストアンサー1

はい、Awkを使用して実行できますが、これを行うためにJoinが作成されました。

join -a1 -a2 file1 file2

特定のサンプルの出力:

001 A
002 B D
003 C D
004 D
005 E
006 F

を実行する前にファイルをソートする必要がありますjoin。シェルがそれをサポートしている場合は、次のコマンドを使用して1つの手順で実行できます。プロセスの交換:

join -a1 -a2 <(sort file1) <(sort file2)

おすすめ記事