我有一个很大的制表符分隔文本文件,其中包含标题和数据。我想按列将文件拆分为较小的文件,排除标题,并将文件命名为列名。
pos red green blue
123 0|0 1|0 0|0
321 1|0 1|0 0|0
231 0|0 0|0 0|0
213 0|0 1|0 1|0
我需要将文件分成:
pos.txt:
123
321
231
213
red.txt:
0|0
1|0
0|0
0|0
green.txt:
1|0
1|0
0|0
1|0
blue.txt:
0|0
0|0
0|0
1|0
我试过:
awk 'NR==1{h=$0; next}
!seen[$3]++{f=${h[$3]}".txt"; print >> f}' infile
但它一直没有发挥作用...
答案1
你可以这样尝试:
awk 'NR==1{for (i=1;i<=NF;i++) a[i]=$i; next}
{for (i=1;i<=NF;i++) {print $i > a[i]".txt"}}' infile
在标题行上,它将每个字段的值保存在数组中,然后对于其余行,它将每个字段打印到相应的文件名。