Substituir texto em um arquivo e corresponder no segundo arquivo

1

Eu tenho dois arquivos de texto, arquivo1 e arquivo2. No arquivo1, gostaria de iniciar a numeração na segunda coluna (após o espaço) de 0. No entanto, essa nova numeração deve corresponder à numeração no arquivo2.

file1.txt

b/boat_deck/19405.jpg 19
b/boat_deck/19491.jpg 19
c/church_outdoor/32697.jpg 325
c/church_outdoor/32110.jpg 325
c/courtyard/42770.jpg 42
c/courtyard/42654.jpg 42

file2.txt

val/00000533.jpg 325
val/00000378.jpg 19
val/00000524.jpg 42

Saída desejada com nova numeração. Como você pode ver no newfile1, 19 foram substituídos por 0, 325 por 1 e 42 por 2. Da mesma forma, em newfile2, os números na segunda coluna correspondem à nova numeração (de newfile1).

newfile1.txt

b/boat_deck/19405.jpg 0
b/boat_deck/19491.jpg 0
c/church_outdoor/32697.jpg 1
c/church_outdoor/32110.jpg 1
c/courtyard/42770.jpg 2
c/courtyard/42654.jpg 2

newfile2.txt

val/00000533.jpg 1
val/00000378.jpg 0
val/00000524.jpg 2
    
por apples-oranges 02.04.2016 / 01:43

1 resposta

3

Que tal

awk '
  BEGIN{n=0}
  NR==FNR && a[$2]=="" {
    a[$2]=n++
  }
  {
    $2=a[$2]; print $0 > "new"FILENAME
  }' file1.txt file2.txt
    
por steeldriver 02.04.2016 / 03:12