両方のファイルをマージし、両方のファイルの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)