Ansatzの備忘録

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

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

問題134 Pythonのインデントの確認

問題のファイルは

https://github.com/shellgei/shellgei160

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

grepでスペースを検出すればいいやと思ったが空行の扱いをどうすればいいのかわからず完成させられなかった。

解答例は

awk 'match($0, /^ +/){if (RLENGTH%4) print NR}' hoge.py

となる。match の引数の1つ目は行全体を表している。2つ目は//で正規表現によって先頭が空白の行を表している。そしてアクションのところで空白が4の倍数個ある行だけその行番号を出力している。空行は空白が4の倍数個ではないのだろう。気になるなら正規表現に工夫を凝らせばどうにかなりそう。