ヘッダーとデータを含むタブで区切られた大きなテキストファイルがあります。ファイルを列ごとに小さなファイルに分割し、ヘッダーを除いてファイル名を列名として指定したいと思います。
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
ヘッダー行は各フィールドの値を配列に保存し、残りの行については各フィールドを対応するファイル名で印刷します。