Arquivo de entrada:
col01 20083d70-1bf0-40f4-9df9-6247d587c085 text text
col02 d233d76d-e60d-442e-9b44-f0e1dc9ebefb text text
col03 20083d70-1bf0-40f4-9df9-6247d587c085 text text
col04 20083d70-1bf0-40f4-9df9-6247d587c085 text text
col05 b26063fa-93e4-414d-82f2-7c2924c81cc6 text text
col06 dc3e2f9b-05bf-49b4-a63e-c4bc09524eb3 text text
col07 d9f5cf1d-a8f9-488d-b088-b7ad00b67ec6 text text
col08 b26063fa-93e4-414d-82f2-7c2924c81cc6 text text
col09 d9a558ff-494a-4ada-8ec2-e9b2f9178599 text text
col10 b26063fa-93e4-414d-82f2-7c2924c81cc6 text text
col11 b26063fa-93e4-414d-82f2-7c2924c81cc6 text text
col12 4d78f804-18f6-4cc8-98a3-c4aedc60aebf text text
col13 0fe487fe-2ff2-4ca4-adf8-de3c19115dde text text
col14 581207a4-f4a5-4373-806b-0e1f7c298bb1 text text
arquivo de referência:
0fe487fe-2ff2-4ca4-adf8-de3c19115dde group1
20083d70-1bf0-40f4-9df9-6247d587c085 group2
4d78f804-18f6-4cc8-98a3-c4aedc60aebf group3
581207a4-f4a5-4373-806b-0e1f7c298bb1 group4
b26063fa-93e4-414d-82f2-7c2924c81cc6 group5
d233d76d-e60d-442e-9b44-f0e1dc9ebefb group6
d9a558ff-494a-4ada-8ec2-e9b2f9178599 group7
d9f5cf1d-a8f9-488d-b088-b7ad00b67ec6 group8
dc3e2f9b-05bf-49b4-a63e-c4bc09524eb3 group9
saída esperada:
col01 20083d70-1bf0-40f4-9df9-6247d587c085(group2) text text
col02 d233d76d-e60d-442e-9b44-f0e1dc9ebefb(group6) text text
col03 20083d70-1bf0-40f4-9df9-6247d587c085(group2) text text
col04 20083d70-1bf0-40f4-9df9-6247d587c085(group2) text text
col05 b26063fa-93e4-414d-82f2-7c2924c81cc6(group5) text text
col06 dc3e2f9b-05bf-49b4-a63e-c4bc09524eb3(group9) text text
col07 d9f5cf1d-a8f9-488d-b088-b7ad00b67ec6(group8) text text
col08 b26063fa-93e4-414d-82f2-7c2924c81cc6(group5) text text
col09 d9a558ff-494a-4ada-8ec2-e9b2f9178599(group7) text text
col10 b26063fa-93e4-414d-82f2-7c2924c81cc6(group5) text text
col11 b26063fa-93e4-414d-82f2-7c2924c81cc6(group5) text text
col12 4d78f804-18f6-4cc8-98a3-c4aedc60aebf(group3) text text
col13 0fe487fe-2ff2-4ca4-adf8-de3c19115dde(group1) text text
col14 581207a4-f4a5-4373-806b-0e1f7c298bb1(group4) text text
agora eu posso conseguir isso com sed -i
loop while
:
$ cat reference|while read a b;do sed -i s/"$a"/"$a($b)"/ input;done
Poderia ser feito de uma maneira mais fácil, usando apenas o awk e sem o loop while, usando o arquivo de entrada e referência no processamento do comando awk único alterando os valores apenas na segunda coluna?
A abordagem a seguir é puramente
awk
baseada e evita o loop externo:Isso processará primeiro o arquivo de "referência" e gerará uma lista de pares UUID-"Group nr" (na verdade, duas matrizes com entradas correspondentes) desse arquivo.
Uma vez processado este arquivo (indicado por
FNR
, o número de registro por arquivo, diferente deNR
, o número de registro global), e o "arquivo de entrada principal" estiver sendo processado, ele percorrerá todas as associações encontradas e adicionará o ID do grupo correspondente a o UUID na segunda coluna simplesmente comparando o conteúdo atual da segunda coluna com todos os UUIDs registrados.