Awk

根據第二個文件中的索引替換一個文件中的行

  • August 16, 2019

我有兩個文件:

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
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

引用自:https://unix.stackexchange.com/questions/535927