- ベストアンサー
テキストファイル内容の、16進数コードでの検索方法は?
EUC-JPなテキストファイルをその場の環境に応じてLinux、Windowsの両方の環境で書いていると時々行末に余分な制御文字0dH(16進数コード)が入ったりします。 そんな時は、 $ sed -e "s/\x0d$//" INPUT_FILE > OUTPUT_FILE としています。 これに関連して、Linux上で、エディタを開かずにテキストファイル内の 0dH の有無を確かめるにはどのようなコマンドが適切でしょうか。(いちいち調べずに、sedに流し込めばよいのですが) なお、下記では、検索できませんでした。 $ grep "\x0d" INPUTFILE 2006年2月11日 RASUM2
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
grep には引数を十六進指定する機能は無いので、シェルの機能に頼ることになります。 bashなら、$'…' という記法が使えるので(詳細はman bash の $' の説明参照)、 grep $'\x0d' INPUTFILE と書けます。
その他の回答 (3)
- t_nojiri
- ベストアンサー率28% (595/2071)
>コマンドに16進コードを指定してテキストファイルの内容を検索する方法はないでしょうか。 egrep "\x0d" INPUTFILE もしくは、 grep -e "\x0d" INPUTFILE でも、いけそうな気がしてきました。 すみません。体調崩して自分では試してないですけど。
- t_nojiri
- ベストアンサー率28% (595/2071)
#1です。ごめんなさい。さっきのじゃ駄目ですね。 grep -f "ファイル名" INPUTFILE で、ファイル名のところにLFだけ書いたファイルを用意するのはどうでしょう?
お礼
t_nojiri様、ありがとうございます。 > grep -f "ファイル名" INPUTFILE 上記で検索できました。 しかし、 いろいろな制御コードに応用するにはいちいちファイルを作らなければならない。 「0x0dHはCtrl+Mである」といったことを把握しておかなければならない。 という不便さがあります。 コマンドに16進コードを指定してテキストファイルの内容を検索する方法はないでしょうか。 2006年2月11日 RASUM2
- t_nojiri
- ベストアンサー率28% (595/2071)
>なお、下記では、検索できませんでした。 >$ grep "\x0d" INPUTFILE grep -a "\0d" INPUTFILE ではどうでしょう?
お礼
notnot様、ありがとうございます。 16進コードでファイルの内容を検索できるようになりました。 的確なアドバイスのお蔭で、grepとbashの機能の理解を深めることができました。 2006年2月12日 RASUM2