Ansatzの備忘録

勉強したことあるいはふと思い立ったこと

シェルワンライナー160本ノック問題52

問題52 集計形式の変換

問題のファイルは

https://github.com/shellgei/shellgei160

からダウンロードできる。

クロス集計表を1レコード1行の形式に変換する問題だった。まったく思いつかなかった。

解答例は

awk 'FNR==1{$1="";h=$0}FNR!=1{print FILENAME,$0,h,NF-1}' data_U data_V | awk '{for(i=NF-$NF;i<NF;i++)print $1,$2,$i,$(i-$NF)}' | sed 's/data_//'

となる。まず1行1レコードに直している。次にファイル名とデータの個数を付け加えている。最後にペアを作って整形している。

なんだか前にも似たような失敗をした気がする。相変わらず複数行にわたる処理ができていない。