Se eu entendi bem a sua pergunta, parece um típico join ("Unir linhas em um campo comum") caso de uso:
join --header -j 4 -t $'\t' file1.txt file2.txt
Você recebe 7 colunas para cada linha correspondente.
Aqui está o que eu recebo (para os dados levemente modificados, veja abaixo):
Column_4 Column_1 Column_2 Column_3 Column_1 Column_2 Column_3
D2 A2 B2 C2 Aa2 Bb2 Cc2
D3 A3 B3 C3 Aa3 Bb3 Cc3
D8 A8 B8 C8 Aa8 Bb8 Cc8
(desculpe, as guias não são bonitas aqui):
Coluna_4 é seu valor correspondente e vem em primeiro lugar. Você pode comparar os valores das outras colunas conforme solicitado em seu objetivo .
Se você quiser apenas as colunas da segunda tabela, use:
join --header -j 4 -o 2.1,2.2,2.3,2.4 -t $'\t' file1.txt file2.txt
No entanto, join
espera que seus arquivos de entrada sejam classificados, então você precisa passá-los por sort
e classificá-los no campo 4 primeiro:
join --header -j 4 -o 2.1,2.2,2.3,2.4 -t $'\t' <(sort -k4 file1.txt) <(sort -k 4 file2.txt)
Para uma demonstração melhor, sugiro arquivos de origem ligeiramente diferentes (hem, isso foi antes de você editá-los)
arquivo1:
Column_1 Column_2 Column_3 Column_4
A0 B0 C0 D0
A2 B2 C2 D2
A3 B3 C3 D3
A8 B8 C8 D8
arquivo2:
Column_1 Column_2 Column_3 Column_4
Aa1 Bb1 Cc1 D1
Aa2 Bb2 Cc2 D2
Aa3 Bb3 Cc3 D3
Aa4 Bb4 Cc4 D4
Aa5 Bb5 Cc5 D5
Aa6 Bb6 Cc6 D6
Aa7 Bb7 Cc7 D7
Aa8 Bb8 Cc8 D8
Aa9 Bb9 Cc9 D9