• ベストアンサー

テキストファイル内容の、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

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10359)
回答No.4

grep には引数を十六進指定する機能は無いので、シェルの機能に頼ることになります。 bashなら、$'…' という記法が使えるので(詳細はman bash の $' の説明参照)、 grep $'\x0d' INPUTFILE と書けます。

RASUM2
質問者

お礼

notnot様、ありがとうございます。 16進コードでファイルの内容を検索できるようになりました。 的確なアドバイスのお蔭で、grepとbashの機能の理解を深めることができました。 2006年2月12日 RASUM2

その他の回答 (3)

  • t_nojiri
  • ベストアンサー率28% (595/2071)
回答No.3

>コマンドに16進コードを指定してテキストファイルの内容を検索する方法はないでしょうか。 egrep "\x0d" INPUTFILE もしくは、 grep -e "\x0d" INPUTFILE でも、いけそうな気がしてきました。 すみません。体調崩して自分では試してないですけど。

  • t_nojiri
  • ベストアンサー率28% (595/2071)
回答No.2

#1です。ごめんなさい。さっきのじゃ駄目ですね。 grep -f "ファイル名" INPUTFILE で、ファイル名のところにLFだけ書いたファイルを用意するのはどうでしょう?

RASUM2
質問者

お礼

t_nojiri様、ありがとうございます。 > grep -f "ファイル名" INPUTFILE 上記で検索できました。 しかし、 いろいろな制御コードに応用するにはいちいちファイルを作らなければならない。 「0x0dHはCtrl+Mである」といったことを把握しておかなければならない。 という不便さがあります。 コマンドに16進コードを指定してテキストファイルの内容を検索する方法はないでしょうか。 2006年2月11日 RASUM2

  • t_nojiri
  • ベストアンサー率28% (595/2071)
回答No.1

>なお、下記では、検索できませんでした。 >$ grep "\x0d" INPUTFILE grep -a "\0d" INPUTFILE ではどうでしょう?

参考URL:
http://www.linux.or.jp/JM/html/GNU_grep/man1/grep.1.html

関連するQ&A

専門家に質問してみよう