Como faço para encontrar e substituir no arquivo1 os valores do arquivo2

1

arquivo1

O,tested test,12345
OC,test explore,34567

arquivo2

O,new order
OC,new quote 

Eu preciso de uma saída como abaixo:

New order,tested test,12345
New quote,test explore,34567
    
por Test priya 29.07.2015 / 04:20

2 respostas

3

Isso é um trabalho para join :

join -t, -j1 -o 2.2,1.2,1.3 <(sort file1) <(sort file2)
  • -t especifica o separador de entrada e saída
  • -j1 é o campo de junção (em ambos os arquivos, o primeiro)
  • -o ... o formato da saída conforme desejado na pergunta
por chaos 29.07.2015 / 11:16
3

Isso é algo em que awk lida muito bem lendo um arquivo na memória e depois substituindo os itens no outro:

$ awk -F, -v OFS="," 'FNR==NR {a[]=; next} {=a[]}1' f2 f1
new order,tested test,12345
new quote,test explore,34567

A ideia é armazenar os valores do arquivo2 em uma matriz values[file1]=file2 . Então, ao ler o arquivo1, substituímos o primeiro campo pelo mapeamento na matriz values[] .

Observe que isso pode ser estendido para levar em consideração casos em que os campos não estão presentes na matriz ou muitas outras coisas.

    
por fedorqui 29.07.2015 / 11:26