我有这两个选项卡分开的文件:
fileA.tsv
probeId sample1_betaval sample2_betaval sample3_betaval
a 1 2 3
b 4 5 6
c 7 8 9fileB.tsv
probeId region gene
a intronic tp53
b non-coding NA
c exonic kras由于它们已经按照probeId进行了排序,所以我合并了两个文件:
join -j 1 fileA.tsv fileB.tsv -t $'\t' > complete.tsv问题是输出不保存标题:
a 1 2 3 intronic tp53
b 4 5 6 non-coding NA
c 7 8 9 exonic kras而我想要的输出是:
probeId sample1_betaval sample2_betaval sample3_betaval region gene
a 1 2 3 intronic tp53
b 4 5 6 non-coding NA
c 7 8 9 exonic kras我怎样才能做到这一点?
发布于 2020-04-23 10:53:12
如果您的join提供了--header选项,请添加它:
join --header -j 1 fileA.tsv fileB.tsv -t $'\t' > complete.tsv发布于 2020-04-23 10:30:08
请你试一试(万一你还好)。
awk '
FNR==NR{
array[$1]=$0
next
}
($1 in array){
print array[$1],$2,$3
}
' filea fileb | column -t编辑: from case OP在fileb中有许多列,并且希望打印除第1列之外的所有列,然后尝试如下。
awk '
FNR==NR{
array[$1]=$0
next
}
($1 in array){
val=$1
$1=""
sub(/^ +/,"")
print array[val],$0
}
' filea fileb | column -thttps://stackoverflow.com/questions/61384860
复制相似问题