すっきりしてないのですが、改行を含めて Unix 系 OS と同じにするなら BINMODE で実行するのが望ましいのかもしれません。
特定の文字列を含むセクションだけを抜き出す (続き) - 日本 GNU AWK ユーザー会 0.2
情報ありがとうございます m(_ _)m CygwinだけでなくGAWKにもBINMODEというのがあったのですね。調べてみたらGAWKのドキュメントに記述がありました。
Under OS/2 and DOS, gawk (and many other text programs) silently translate end-of-line "\r\n" to "\n" on input and "\n" to "\r\n" on output.
http://www.kt.rim.or.jp/~kbk/gawk-3.1/gawk.html#SEC257
Cygwin上のGAWKを「Under OS/2 and DOS」と呼んでいいか微妙ですが、GAWKが"\r\n"を"\n"に変換しているようです。で、BINMODE=rとすると入力ファイルの改行コードをそのままGAWKで処理すると。勉強になりました。
(10/19追記)
AWKの偉い人らしいきむらさん*1が調査結果を公開されていました。ありがとうございます。
本当はちゃんと書きたかったのですが時間がないため簡単なご紹介のみでご容赦下さい。
- ときどきの雑記帖 リターンズ
手順としては
- Cygwin上のCプログラムで入力の改行コードが自動変換されることを確認
- AWKをデバッグモードで動かして、最初の入力時点で改行コードが自動変換されることを確認
- ソースを追いかけてlibcが原因と特定
という流れです。
問題解決力の高さは問題を切り分ける分解能の高さからくるんだなと感じます。