
Eu tenho um requisito de projeto no qual preciso ler o arquivo1 de cima para baixo e combinar a coluna 2 com a coluna 3 do arquivo2. Ambos os arquivos são delimitados por tabulações.
Se um registro corresponder, tenho que escrever o registro completo do arquivo 1 para o novo arquivo3 e, se não corresponder, tenho que escrever o mesmo registro no arquivo de erro (arquivo4). Arquivo1 e arquivo2 contêm 500-510 registros. É necessário começar a ler o arquivo1 desde o início e encontrar o valor da coluna 2 na coluna 3 do arquivo2 (verificação completa de cima para baixo, se necessário).
arquivo1
ZZA 01 LIST18
ZZY 02 LIST38
UTW 80 LIST100
OOP 11 LIST56
arquivo2
A1 21138 99999 LIST18
W1 20223 99999 LIST44
Z9 20355 99999 LIST56
O9 21002 21154 LIST11
arquivo3
ZZA 01 LIST18
OOP 11 LIST56
arquivo4
ZZY 02 LIST38
UTW 80 LIST100
Responder1
Se você quisesse combinar a coluna 3 do arquivo1 com a coluna 4 do arquivo2, você poderia usar awk
:
awk -F'\t' '
NR==FNR{ arr[$4]; next }
{ print > (($3 in arr) ? "file3" : "file4") }
' file2 file1
Isso lê o arquivo2 primeiro e salva o quarto campo na matriz arr
como índice.
Em seguida, leia o arquivo1 e print
cada registro. Se o terceiro campo existir na matriz, redirecione a saída para file3, caso contrário, para file4 .