Ansatzの備忘録

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

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

問題51 テストの得点一覧の出力

問題のファイルは

https://github.com/shellgei/shellgei160

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

出席してない人を0点にするという条件の下で成績と名簿を結合する問題だった。今回はできた。

自分の解答例は

sed -E 's/0*([0-9])/\1/;s/([0-9])/00\1/' scores.txt | sort -k1,1n | join -a 1 students.txt - | awk '{a[$2]=$3}a[$2]==""{print $1,$2,0}a[$2]!=""{print $0}'

である。本の解答例を見て、最後の awk は NF の変数を用いたほうが簡潔に書けるということに気が付いた。