あるスクリプトで意図しない出力結果となり、原因を追っていったら awk 周りだった。
awk の if で数値評価をしていたとき、意図せず評価対象に文字列が紛れ込んでいた。
どうも文字列を数値と比較評価すると true になるらしい。
心情的には成立してほしくなかったなぁ。
検証
通常パターン
$ echo 3 | awk '$1 > 5'
$ ## 3 > 5 で false となり何も出力されない
想定してなかった文字列がきてしまった時
int で変換すればちゃんと評価してくれる
$ echo "hoge" | awk 'int($1) > 1'
$ echo "3" | awk 'int($1) > 1'
3