【问题标题】:How to combine many text files in a tab-delimited format?如何以制表符分隔的格式组合多个文本文件?
【发布时间】:2017-02-09 11:13:25
【问题描述】:

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

文件1:

abcd 2
efgh 1
ijkl 3
mnop 4

文件2:

abcd 1
efgh 2
mnop 2

文件3:

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

转置后合并所有文件并使用零输入制作单个文件的困难部分,其中文件中的某些条目没有值。不知道什么程序可以做到这一点?!

【问题讨论】:

  • 通过标记许多不同的语言来广撒网并不是获得答案的最佳方式。您应该阅读how to ask 并展示一些您正在尝试做的事情的初步尝试。

标签: python perl awk


【解决方案1】:

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'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-23
    • 2019-11-24
    • 2012-03-07
    • 1970-01-01
    • 1970-01-01
    • 2011-05-30
    • 2022-01-09
    相关资源
    最近更新 更多