プロが教えるわが家の防犯対策術!

Linux環境 grepで改行コード(CRLF、LF)を検索できないでしょうか?
grep '\t\n' aaa.txtとしても、「\」はエスケープしてしまいます。
検索方法、grep以外でもご存知の方いらっしゃいましたらご教示いただけたら幸いです。

A 回答 (6件)

GNU grep 2.5.4 だと、実験的なものだとかかれていますが


-P オプションで perl の正規表現が使えます。

それを使えば

grep -P '\r\n' aaa.txt
で CRLF を持つ行を抽出できます。

他の方が書かれているように CR は \t ではなく、
\r です。
    • good
    • 1
この回答へのお礼

返事が遅くなり大変申し訳ございません。

回答ありがとうございます。

全くもって勘違いしておりました。

もっと勉強します。

ありがとうございました。

お礼日時:2010/07/07 13:38

なにか誤解しているようですが



\tで表わされる「TAB」は、あくまで「TAB」です(ASCIIコード0x09)
改行コードでも「CR(0x0d)」でも「LF(0x0a)」でもありません。
「改行コードのタブ」などというものは、少なくとも私は知りません。

つまり、たとえ \t を展開するPerl等を使ったとしても、 \t\n は「TABの直後にLF」にヒットするだけで、CRLFにはヒットしません。
CRは \r です。
    • good
    • 1
この回答へのお礼

遅くなりましてすみません。

全くもって勘違いしておりました。

ありがとうございました。

お礼日時:2010/07/07 13:33

grepは行単位で処理を行うので、改行コードそのものを検索する方法はありません。


行末のパターンを検索する目的なら、行末にマッチする正規表現である$を使用します。
ただ、CRLFだと、CRが残ってしまうので、その点を考慮する必要はあります。

また、\+文字が特殊記号に展開されるかどうか、されるならどう展開されるかは、処理系によって違います。

grep自体には\t→tabのような展開機能はありません。
直接タブコードを入れる必要があります。
シェルのキーバインドによって、CTRL-Vの後にTABだったり、直接TABだったり、その他の方法だったりします
grep '<ここにTAB>$' aaa.txt

シェルの展開機能を使う方法もあります。
bashの場合、通常の"や'では展開されず、その前に$を付けることで展開されます。
grep $'\t$' aaa.txt

zshでは"で展開できます。
grep "\t\$" aaa.txt

他のシェル等については、それぞれのマニュアルを参照ください。
    • good
    • 0

No.2です、私がバカでした。

理解力が弱くてすみません。

行末については$を使えば良いみたいです。
また、タブについてはCtrl+vの後にtabを押せば大丈夫のようです。

grep " $" tmp.txt
("の後にC+vの後tabキー)

で、行末にタブがある行を検索できました。
bashですがkshでも大丈夫だそうです。
    • good
    • 1

私がバカなのかも知れませんが、



grepというのは、検索したものが含まれている行を出力する機能です。
行というのはファイルの先頭か改行の部分の次の所から、
ファイルの終わりが次の改行までのことです。

なので、改行コードを検索するということは、最終行以外を出力するのとイコールです。

ちなみにviを使えば改行コードの可視化はできます。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
試してみましたが、CRLFのタブはTabキーとはまた別物のようで、検索できませんでした。
grepでは改行コードを検索するのは不可能なのようですね。

perlを使うかcで作るしかないですかね。viやサクラエディタでは表示されますが。

質問の仕方がよくなかったのもありますが、
CRLFが含まれるファイルを調べたかったので、fileコマンドで解決できました。

すみません別の場所で頂いた回答で解決しました。
http://www.geocities.jp/geo_sunisland/character_ …
http://www.dolphin-bbs.net/linuxtips/crlf.html

ありがとうございました。

お礼日時:2010/06/24 10:18

行末に TAB がある行でいいなら



awk '/\t$/{print}' aaa.txt

grep だと \t は無視されるみたいね
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

awkでも改行コード(CRLF)のTABは検索できませんでした。

元々の目的がCRLFを含むファイルの検索でしたので、fileコマンドで解決することができました。
ありがとうございました。

お礼日時:2010/06/24 10:20

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A