Ansatzの備忘録

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

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

問題35 5文字以上のカタカナ言葉を使ったらアウト

問題のファイルは

https://github.com/shellgei/shellgei160

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

5文字以上のカタカナ言葉が使われた時点で出力を打ち切る問題だった。正規表現でどう打ち切ればいいのか思いつかないあたり相当頭がバカになっているのかもしれない。最短一致を使って解いていた。

解答例は

cat speech.txt | grep -Po '^.*?[ア-ン]{4}(?=[ア-ン])' | awk '{$2=$1}$1=length($2)'

となる。最後の awk がよくわからなかったが、次のような仕様になっているのでこれでいいようだ。

If the pattern is missing, the action executes for every single record of input.  A missing action is  equivalent to

              { print }

which prints the entire record.