約250個のファイルがあります.gtf
。これには3つのファイルが表示されます.gtf
。すべての.gtf
ファイルには、次の3つの列があります。
TUSCC120A.gtf
TUSCC36.gtf
TUSCC89B.gtf
TUSCC120A.gtf
次のように:
transcript MSTRG.6968.1 0.000000
transcript MSTRG.6968.2 1.000000
transcript MSTRG.6975.2 0.000000
transcript ENST00000446 3.000000
transcript ENST00000432 0.000000
TUSCC36.gtf
次のように:
transcript ENST00000446 3.456000
transcript MSTRG.6968.2 1.342000
transcript MSTRG.6968.1 0.000000
transcript MSTRG.6975.2 4.000000
transcript ENST00000432 5.000000
TUSCC89B.gtf
次のように:
transcript MSTRG.6975.2 2.213000
transcript MSTRG.6968.2 4.342000
transcript ENST00000432 2.000000
transcript ENST00000446 0.000000
transcript MSTRG.6968.1 3.000000
2番目の列に示すように、3つのファイルはすべて名前の順序が異なります.gtf
。 3つのgtfファイルをすべてマージしようとしています。私は前に試しましたpaste
paste TUSCC120A.gtf TUSCC36.gtf TUSCC89B.gtf > output.txt
output.txt
良い:
transcript MSTRG.6968.1 0.000000 transcript ENST00000446 3.456000 transcript MSTRG.6975.2 2.213000
transcript MSTRG.6968.2 0.000000 transcript MSTRG.6968.2 1.342000 transcript MSTRG.6968.2 4.342000
transcript MSTRG.6975.2 0.000000 transcript MSTRG.6968.1 0.000000 transcript ENST00000432 2.000000
transcript ENST00000446 0.000000 transcript MSTRG.6975.2 4.000000 transcript ENST00000446 0.000000
transcript ENST00000432 0.000000 transcript ENST00000432 5.000000 transcript MSTRG.6968.1 3.000000
出力が次のようになります。
ID target_Ids TUSCC120A TUSCC36 TUSCC89B
transcript MSTRG.6968.1 0.000000 0.000000 3.000000
transcript MSTRG.6968.2 1.000000 1.342000 4.342000
transcript MSTRG.6975.2 0.000000 4.000000 2.213000
transcript ENST00000446 3.000000 3.456000 0.000000
transcript ENST00000432 0.000000 5.000000 2.000000
答え1
$ cat -f tst.awk
BEGIN {
header = "id" FS "target_id"
}
FNR == 1 {
f = FILENAME
sub(/\.gtf/,"",f)
header = header FS f
}
{
row[$2] = (FNR==NR ? $0 : row[$2] FS $3)
}
END {
print header
for (x in row) print row[x]
}
使用法:
$ awk -f tst.awk *.gtf
id target_id TUSCC120A TUSCC36 TUSCC89B
transcript MSTRG.6968.1 0.000000 0.000000 3.000000
transcript MSTRG.6975.2 0.000000 4.000000 2.213000
transcript MSTRG.6968.2 1.000000 1.342000 4.342000
transcript ENST00000446 3.000000 3.456000 0.000000
transcript ENST00000432 0.000000 5.000000 2.000000