改行コード一括検索
ちょっと仕事で困ってます。うちのHTMLファイルは「CR+LF」がデフォルトなんだけど、たまに外注やバイトさんがミスって「CR」「LF」になってたりするんですよね。んで、そういった改行コードが違うファイルをコマンドラインから一括で検索したいんだけどどうしたら良いのか……。
以前、師匠に教えてもらった気がするのでグループウェア内を検索しまくったけど見当たらず。grep、find、awkとか使ってた気がするんだけどな……。もし知ってるよという方がおられましたらご教示願います。
んー、素直にGUIアプリケーション (K2Editor、Jedit、秀丸など) でやるべきか……。
以下、2004/01/21 15:00追記
なんて書いてたら、社内の管理者さんがスクリプト書いてくれてたり。せっかくなのでここに転載 (してもいいよね?)。
#!/usr/bin/[]perl[] $[]ff[] = 0; open(IN, $ARGV[0]); while(<IN>){ if)(($[]ff[] == 0)&&(/¥r¥n/))({ print "$ARGV[0]: CR+[]LF[] included¥n"; $[]ff[] = 1; }elsif)(($[]ff[] == 0)&&(/¥n/))({ print "$ARGV[0]: []LF[] included¥n"; $[]ff[] = 1;
}elsif)(($[]ff[] == 0)&&(/¥r/))({ print "$ARGV[0]: CR included¥n"; $[]ff[] = 1; } } close(IN);
これを <code.pl> として保存。
んで、
find . -name '*.htm*' -type f -exec ./code.pl
とやってやると――
./news_release/2002/0221/index.html: CR+[]LF[] included ./news_release/2002/0221/index2.html: CR+[]LF[] included
こんな感じに返すと。うむ、これは便利だなぁ。
以下、2004/01/23 01:45追記
で、さらにこの一覧をテキストファイルとして出力後、
grep ' []LF[] included' hogehoge.txt > hogehoge_lf.txt
なんてやるとLFで記述されたファイルのみがリストアップされると。
ちなみに某案件でやってみたら半分以上 (2500ページ) がCRかLFという悲惨な現状が浮き彫りに……。がくり。