データファイルがありますA.tsv
(フィールド区切り記号= \t
)。
id clade mutation
243 40A SDF
254 20B
261 40A
267 20B
B.tsv
(フィールド区切り記号 = \t
):
id clade mutation
243 40A
254 20B
261 40A
267 20B SLT
C.tsv
(フィールド区切り記号 = \t
):
id clade mutation
243 40A
254 20B
261 40A MGG
267 20B
すべてのファイル間で他の唯一の列は列であることを知り、すべてのファイルを1つにリンクしたいと思いますmutation
。予想される結果は次のとおりです。
id clade mutation
243 40A SDF
254 20B
261 40A MGG
267 20B SLT
これまで私は次のことを試しました。
awk 'BEGIN{FS=OFS="\t"} NR==FNR{klos[NR]=$3; next} $3==""{$3=klos[FNR]} 1' *.tsv > output.tsv
しかし、うまくいきません。する方法はありますか?ありがとう
PS:これはサンプルテストです。実際には3つ以上のファイルがあります。ただし、例と同様に、mutation
その列に同じ内容を持つ2つのファイルはありません。
ベストアンサー1
すべてのUnixシステムのすべてのシェルでawkを使用してください。
$ cat tst.awk
BEGIN { FS=OFS="\t" }
(NR == FNR) || ($3 != "") {
fnr2rec[FNR] = $0
}
FILENAME == ARGV[ARGC-1] {
print fnr2rec[FNR]
}
$ awk -f tst.awk A.tsv B.tsv C.tsv
id clade mutation
243 40A SDF
254 20B
261 40A MGG
267 20B SLT