10代と話して驚いたこと

EUC-JPなテキストファイルをその場の環境に応じてLinux、Windowsの両方の環境で書いていると時々行末に余分な制御文字0dH(16進数コード)が入ったりします。
そんな時は、
$ sed -e "s/\x0d$//" INPUT_FILE > OUTPUT_FILE
としています。

これに関連して、Linux上で、エディタを開かずにテキストファイル内の 0dH の有無を確かめるにはどのようなコマンドが適切でしょうか。(いちいち調べずに、sedに流し込めばよいのですが)

なお、下記では、検索できませんでした。
$ grep "\x0d" INPUTFILE

2006年2月11日
RASUM2

A 回答 (4件)

grep には引数を十六進指定する機能は無いので、シェルの機能に頼ることになります。


bashなら、$'…' という記法が使えるので(詳細はman bash の $' の説明参照)、
grep $'\x0d' INPUTFILE と書けます。
    • good
    • 0
この回答へのお礼

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

2006年2月12日
RASUM2

お礼日時:2006/02/12 13:24

>コマンドに16進コードを指定してテキストファイルの内容を検索する方法はないでしょうか。



egrep "\x0d" INPUTFILE

もしくは、

grep -e "\x0d" INPUTFILE

でも、いけそうな気がしてきました。
すみません。体調崩して自分では試してないですけど。
    • good
    • 0

#1です。

ごめんなさい。さっきのじゃ駄目ですね。

grep -f "ファイル名" INPUTFILE

で、ファイル名のところにLFだけ書いたファイルを用意するのはどうでしょう?
    • good
    • 0
この回答へのお礼

t_nojiri様、ありがとうございます。

> grep -f "ファイル名" INPUTFILE
上記で検索できました。
しかし、

いろいろな制御コードに応用するにはいちいちファイルを作らなければならない。

「0x0dHはCtrl+Mである」といったことを把握しておかなければならない。

という不便さがあります。
コマンドに16進コードを指定してテキストファイルの内容を検索する方法はないでしょうか。

2006年2月11日
RASUM2

お礼日時:2006/02/11 18:02

>なお、下記では、検索できませんでした。


>$ grep "\x0d" INPUTFILE

grep -a "\0d" INPUTFILE
ではどうでしょう?

参考URL:http://www.linux.or.jp/JM/html/GNU_grep/man1/gre …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報