如何以制表符分隔的格式组合多个文本文件?

时间:2017-02-09 02:26:27

标签: python perl awk

我有数百个这种格式的文件(文件中的两列按空格分隔)。

文件1:

abcd 2
efgh 1
ijkl 3
mnop 4

file2的:

abcd 1
efgh 2
mnop 2

file3的:

mnop 1

我希望以这种格式在制表符分隔文件中显示所有结果:

      abcd efgh ijkl mnop
file1   2   1     3    4
file2   1   2     0    2
file3   0   0     0    1

所以,首先我需要将两列文件转换为两行。我尝试使用这个awk命令但没有工作:

awk '!(NR%2){print}' FS='\n' OFS='\t' RS= file1.txt > file1-tr.txt

转置后组合所有文件并使用ZERO输入生成单个文件的困难部分,其中文件中的某些条目没有值。不确定哪个程序可以做到这一点?!

1 个答案:

答案 0 :(得分:2)

awk救援!

$ awk -v OFS='\t' '{f=FILENAME; fs[f]; vs[$1]; a[f,$1]=$2} 
               END {for(v in vs) printf "%s", OFS v; 
                    print ""; 
                    for(f in fs) 
                      {printf "%s", f OFS; 
                       for(v in vs) printf "%s", a[f,v]+0 OFS; 
                       print ""}}' file{1..3} | 
  column -ts'\t'