Ansatzの備忘録

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

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

問題47 前月比データの付加

問題のファイルは

https://github.com/shellgei/shellgei160

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

行をまたいだ処理と、最初の行だけ特別扱いするということがポイントだった。連想配列でも使うのかと思っていろいろやってみたがそんな必要は全くなかった。

解答例は

cat mom.csv | awk -F"," '{print $0,$2,n;n=$2}' | awk '{printf $1","}NR==1{print "*"}NR>1{print "+"$2/$3*100-100"%"}' | sed 's/+-/-/'

となる。前の行から必要なデータを持ってきてひとまず出力してから一行ずつ処理したほうがわかりやすかった。

自分はどうやら行をまたぐ処理が苦手なのだろうなと最近分かってきた。今回の問題の考え方はしっかり身に着けておこうと思う。