在一个文件中替换文本并在第二个文件中匹配

在一个文件中替换文本并在第二个文件中匹配

我有两个文本文件,file1 和 file2。在 file1 中,我想从 0 开始在第二列(空格后)进行编号。然而,这个新的编号应该与 file2 中的编号相匹配。

文件1.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

文件2.txt

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

带有新编号的期望输出。如您在 newfile1 中看到的,19 被替换为 0,325 被替换为 1,42 被替换为 2。同样,在 newfile2 中,第二列中的数字与新编号相对应(来自 newfile1)。

新文件1.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

新文件2.txt

val/00000533.jpg 1
val/00000378.jpg 0
val/00000524.jpg 2

答案1

怎么样

awk '
  BEGIN{n=0}
  NR==FNR && a[$2]=="" {
    a[$2]=n++
  }
  {
    $2=a[$2]; print $0 > "new"FILENAME
  }' file1.txt file2.txt

相关内容