最初の行の情報に基づいて、ファイルを複数のファイルに分割したいと思います。たとえば、次のようになります。
入力する:
1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 3 3 3 3 3 3 4 4 4 4 4 4 4 30 30 30 30
0 2 2 0 2 0 2 0 2 0 2 2 0 0 2 2 2 0 1 1 1 2 0 2 0 0 0 2 0 0 2 0 2
0 2 1 0 1 0 1 1 1 0 2 2 0 0 2 2 2 0 0 0 0 2 0 2 0 0 1 2 0 0 2 0 2
0 2 1 0 1 0 1 1 1 0 2 2 0 0 2 2 2 0 0 0 0 2 0 2 0 0 1 2 0 0 2 0 2
希望の出力:
output1.txt
02202020
02101011
02101011
output2.txt
2022002
1022002
1022002
output3.txt
220111
220000
220000
output4.txt
202000200202
202001200202
202001200202
出力30.txt
0202
0202
0202
ベストアンサー1
$ awk '
NR == 1 {
for (i=1; i<=NF; i++) {
output[i] = "output" $i ".txt"
files[output[i]] = 1
}
next
}
{
for (i=1; i<=NF; i++) printf "%s", $i > output[i]
for (file in files) print "" > file
}
' input.filename
$ for f in output*.txt; do echo $f; cat $f; done
output1.txt
02202020
02101011
02101011
output2.txt
2022002
1022002
1022002
output3.txt
220111
220000
220000
output30.txt
00202
00202
00202
output4.txt
2020002
2020012
2020012
ヘッダー行には32個のフィールドがあり、他の行には33個のフィールドがあります。この問題を最初に解決する必要があります。