我有一个制表符分隔的列文本,如下所示
文本1
A CD274 PDCD1LG2 CD276 PDCD1LG2 CD274 .......
B NEK2 NEK6 NEK10 NEK10 NEKL-4 ......
C TNFAIP3 OTUD7B OTUD7B TNFAIP3 TNFAIP3......
D DUSP16 DUSP4 DUSP8 VHP-1 DUSP8........
E AGO2 AGO2 AGO2 AGO2 AGO2.........
文本2
header1
header2
header3
header4
.
.
.
我怎样才能给出如下所示的标题
header1 header2 header3 header4 header5
A CD274 PDCD1LG2 CD276 PDCD1LG2 CD274
B NEK2 NEK6 NEK10 NEK10 NEKL-4
C TNFAIP3 OTUD7B OTUD7B TNFAIP3 TNFAIP3
D DUSP16 DUSP4 DUSP8 VHP-1 DUSP8
E AGO2 AGO2 AGO2 AGO2 AGO2
答案1
awk方式 :
awk '
{
if (NR!=FNR) {
if (FNR==1) {
printf "\t"
for (i in arr){printf "%s\t", arr[i]}
print ""
}
print
}
else{
arr[c++]=$1
}
}
' file2 file1
答案2
printf
+paste
解决方案:
printf "\t%s\n" "$(paste -sd'\t' file2)" && cat file1
示例输出:
header1 header2 header3 header4 header5
A CD274 PDCD1LG2 CD276 PDCD1LG2 CD274
B NEK2 NEK6 NEK10 NEK10 NEKL-4
C TNFAIP3 OTUD7B OTUD7B TNFAIP3 TNFAIP3
D DUSP16 DUSP4 DUSP8 VHP-1 DUSP8
E AGO2 AGO2 AGO2 AGO2 AGO2