根据第二个文件中的索引替换一个文件中的行

根据第二个文件中的索引替换一个文件中的行

我有两个文件:

Ref.txt 其中包含:

ABCDEFG,15147,1,2,6
HIJKLMN,500,3,4

和 Seq.txt 其中包含:

ABCXXXX
ABCDEXX
IIJKXXX
HIHKXXX
LMNOPQR
BBCDEXX
STUVWXY

我想替换 Seq.txt 文件中的某些行。应替换的行的索引列在 Ref.txt 文件的字段 3-end 中,应替换的行的索引位于 Ref.txt 文件中同一行的字段 1 中。我在这个例子中寻找的输出是这样的:

ABCDEFG
ABCDEFG
HIJKLMN
HIJKLMN
LMNOPQR
ABCDEFG
STUVWXY

答案1

awk -F, '
  NR==FNR {for(i=3;i<=NF;i++) a[$i] = $1; next} 
  FNR in a {$0 = a[FNR]} 
  1
' Ref.txt Seq.txt 
ABCDEFG
ABCDEFG
HIJKLMN
HIJKLMN
LMNOPQR
ABCDEFG
STUVWXY

相关内容