ODENote

ODEN + Note = ODENote

grepで行末文字 (列) がマッチしなかった件について

  • 環境: RHEL, bash
  • 改行記号に気を付けようね!
  • システム達、仲良くしてくれ!
grep "hoge$" fuga.txt

何回やっても行末の hoge に引っかからない。
Windows の Visual Studio Code で同じ正規表現使うと引っかかる。なんで……?

→ 切り分けして検索して15分は無駄にした。プロキシサーバに阻まれた結果、検索の効果は殆どなかった。fuga.txt で使われている改行記号が CRLF だからでした本当にありがとうございました。

dos2unix fuga.txt
grep "hoge$" fuga.txt

いけました。

そういうもんなんやな。情弱ですんません……。 unix.stackexchange.com

これまでスクリプトから実行後の出力ファイルから Linux で作成していたため、そんなこと考えたことすらなかったわ。
以下は知識としてはあったが、実害を被るとは思ってなかった。頼むわ仲良くしてくれ……。

米マイクロソフト(Microsoft)社はオペレーティングシステム(OS)製品のMS-DOSや後継のWindowsシリーズで、テキストデータの標準の改行コードとしてCRLFを採用したため、これらのシステム上でテキストファイルを作成すると改行がCRLFとして記録される。

一方、米アップル(Apple)社の旧Mac OSシリーズではCR単独を、UNIX系OSや現行のmacOSシリーズ(Mac OS X)ではLF単独を標準の改行コードに採用したため、Windowsやこれらのシステムの間でテキストデータを交換する際には改行コードの変換などが必要となる場合がある。 e-words.jp

リトルエンディアンとビッグエンディアンで、ソケットプログラミングだったかニーモニックだったかで泣きそうになったの思い出した。