Eu tenho dois arquivos de colunas variadas.
File1
:
pears are fruits
apple is fruit
carrot is veg
celery is vegetable
oranges are fruits
File2
:
fruits apple mycode is #q123c# for apple
fruits pears my code is #q432c# for juicy
veg celery my code value is #q989c# for vegetables
veg spinach code is #q783c# and is a type of vegetable
fruits papaya i have code #q346c#
vegie lettuce code #q445c# is vege
Precisa de um arquivo de saída ideal:
Q432C pears fruits
Q123C apple fruit
Q---C carrot veg
Q989C celery vegetable
Q---C oranges fruits
Precisa comparar a coluna 1 do Arquivo1 à coluna 2 de File2
.
Se houver uma correspondência, imprima os códigos q-para-c nos dois campos # em File2
,
Caso contrário, imprima um código vazio de q---c
.
E converta os códigos q-c em letras maiúsculas.
Espero que a saída tenha o mesmo número de linhas que File1
.
Idealmente, o arquivo de saída deve ter o código q-para-c de File2
e, em seguida, anexar as linhas correspondentes de File1
. Mas, no momento, eu só descobri como cortar os códigos q-para-c das linhas que combinavam com File2
e colocadas em maiúsculas:
awk 'NR==FNR { a[$1]=1; next } ($2 in a) {print $0} ' File1 File2 | sed -e 's/.*#\(.*\)#.*//' | tr [a-z] [A-Z] > outputFile
... alguém poderia me ajudar? Eu sou novo em awk
e scripts.
Eu ia fazer uma junção depois de obter os resultados acima, mas arriscaria não juntar os códigos q-para-c corretos às linhas certas, porque o arquivo de saída resultante não tem tantas linhas quanto File1
.
Estou aberto a outra solução que não seja awk
.
Se alguém puder ajudar, eu realmente aprecio isso. :)
Desde já, obrigado.