シェルワンライナー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/+-/-/'
となる。前の行から必要なデータを持ってきてひとまず出力してから一行ずつ処理したほうがわかりやすかった。
自分はどうやら行をまたぐ処理が苦手なのだろうなと最近分かってきた。今回の問題の考え方はしっかり身に着けておこうと思う。