• ベストアンサー

Linux環境 grepで改行コード(CRLF、LF)を検索できないで

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

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

  • ベストアンサー
  • t-okura
  • ベストアンサー率75% (253/335)
回答No.6

GNU grep 2.5.4 だと、実験的なものだとかかれていますが -P オプションで perl の正規表現が使えます。 それを使えば grep -P '\r\n' aaa.txt で CRLF を持つ行を抽出できます。 他の方が書かれているように CR は \t ではなく、 \r です。

fushululu
質問者

お礼

返事が遅くなり大変申し訳ございません。 回答ありがとうございます。 全くもって勘違いしておりました。 もっと勉強します。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (5)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.5

なにか誤解しているようですが \tで表わされる「TAB」は、あくまで「TAB」です(ASCIIコード0x09) 改行コードでも「CR(0x0d)」でも「LF(0x0a)」でもありません。 「改行コードのタブ」などというものは、少なくとも私は知りません。 つまり、たとえ \t を展開するPerl等を使ったとしても、 \t\n は「TABの直後にLF」にヒットするだけで、CRLFにはヒットしません。 CRは \r です。

fushululu
質問者

お礼

遅くなりましてすみません。 全くもって勘違いしておりました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.4

grepは行単位で処理を行うので、改行コードそのものを検索する方法はありません。 行末のパターンを検索する目的なら、行末にマッチする正規表現である$を使用します。 ただ、CRLFだと、CRが残ってしまうので、その点を考慮する必要はあります。 また、\+文字が特殊記号に展開されるかどうか、されるならどう展開されるかは、処理系によって違います。 grep自体には\t→tabのような展開機能はありません。 直接タブコードを入れる必要があります。 シェルのキーバインドによって、CTRL-Vの後にTABだったり、直接TABだったり、その他の方法だったりします grep '<ここにTAB>$' aaa.txt シェルの展開機能を使う方法もあります。 bashの場合、通常の"や'では展開されず、その前に$を付けることで展開されます。 grep $'\t$' aaa.txt zshでは"で展開できます。 grep "\t\$" aaa.txt 他のシェル等については、それぞれのマニュアルを参照ください。

全文を見る
すると、全ての回答が全文表示されます。
  • k_kota
  • ベストアンサー率19% (434/2186)
回答No.3

No.2です、私がバカでした。理解力が弱くてすみません。 行末については$を使えば良いみたいです。 また、タブについてはCtrl+vの後にtabを押せば大丈夫のようです。 grep " $" tmp.txt ("の後にC+vの後tabキー) で、行末にタブがある行を検索できました。 bashですがkshでも大丈夫だそうです。

全文を見る
すると、全ての回答が全文表示されます。
  • k_kota
  • ベストアンサー率19% (434/2186)
回答No.2

私がバカなのかも知れませんが、 grepというのは、検索したものが含まれている行を出力する機能です。 行というのはファイルの先頭か改行の部分の次の所から、 ファイルの終わりが次の改行までのことです。 なので、改行コードを検索するということは、最終行以外を出力するのとイコールです。 ちなみにviを使えば改行コードの可視化はできます。

fushululu
質問者

お礼

ご回答ありがとうございます。 試してみましたが、CRLFのタブはTabキーとはまた別物のようで、検索できませんでした。 grepでは改行コードを検索するのは不可能なのようですね。 perlを使うかcで作るしかないですかね。viやサクラエディタでは表示されますが。 質問の仕方がよくなかったのもありますが、 CRLFが含まれるファイルを調べたかったので、fileコマンドで解決できました。 すみません別の場所で頂いた回答で解決しました。 http://www.geocities.jp/geo_sunisland/character_code.html http://www.dolphin-bbs.net/linuxtips/crlf.html ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • trapezium
  • ベストアンサー率62% (276/442)
回答No.1

行末に TAB がある行でいいなら awk '/\t$/{print}' aaa.txt grep だと \t は無視されるみたいね

fushululu
質問者

お礼

ご回答ありがとうございます。 awkでも改行コード(CRLF)のTABは検索できませんでした。 元々の目的がCRLFを含むファイルの検索でしたので、fileコマンドで解決することができました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 改行コードについて

    改行コードがよく解らないので説明お願いします 様々なサイトの改行コードの説明で LinuxはLF MacはCR WindowsはCRLFと説明しています 私の認識では LF=\n CR=\r CRLF=\r\n だと思っていました ここで疑問なのですが 確かに私の利用した環境ではLinuxの改行コードは\n, Windwosの改行コードは\r\nでした ところがMacの標準のメモ帳(テキストエディット)で文字を入力しても改行コードは\nです 確認方法は od -cというコマンドとfileというコマンドです これはつまりCRではなくLFということですよね? では、なぜ多くのサイトではMacはCRと説明しているのでしょうか? そもそもCR=\rという認識が間違ってるのでしょうか? よろしくお願いします

  • 改行コードについて

    HTMLフォームのテキストエリアで改行した場合の処理についてご質問します。 Windowsのローカル環境で試しています。 改行コードLFでPHPを作成しています。 ○改行コードの認識 LF(\n) Unix,Mac OS X CR(\r) Mac OS 9 CRLF(\r\n) ○テキストエリアからの入力値の処理 CRLF、CRをLFに変換しています。 $value= str_replace ("\r\n", "\n", $value); $value = str_replace ("\r", "\n", $value); このあとDBに値を格納しています。 ○出力の際の処理 DBから値を取得。 phpのprint関数で下記を出力。 <textarea >${value}</textarea> 上記処理で、ローカル、サーバともに正常に動作しています。 しかし改行コードがLF(\n)なのでCRLF(\r\n)のWindowsで表示したときには問題が起きそうな気がします(実際には正常に動作)。 なにかしっくりこなくて質問させていただきました。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 改行コードCR(\r)をアンダースコア(_)に変換

    AIX、Kシェルです。 ファイルに出力された改行コードCR(\r)をアンダースコア(_)に変換したいのですが、 文字コードSJISだと期待通りの結果になるのですが、UTF-8だと全角の手前で止まってしまいます。 試したコマンドは下記です。 cat file.txt | tr "\r" "_" > tmpfile ex) file.txt(最終行は半角spaceと全角space) 10(改行コード=LF) 11(改行コード=CRLF) 12(改行コード=CR) 1(改行コード=LF) 2(改行コード=CRLF) 3(改行コード=CRLF) ああ(改行コード=CRLF)  (改行コード=CR) 【結果】tmpfile 10(改行コード=LF) 11_(改行コード=LF) 12_1(改行コード=LF) 2_(改行コード=LF) 3_(改行コード=LF) ああ_(改行コード=LF)  _ これがUTF-8だと12までは変換できるのですが、以降が出力されません。 UTF-8でも最後まで変換されるようにするにはどうすれば良いのでしょうか? 初心者で申し訳ありません。 お手数ですが、何卒宜しくお願い致します。

  • CRLFをLFに変換したい

    テキストファイルを 1)SJIS → UTF-8 2)CRLF → LF に変換させたいのですが、1)はうまく出来たのですが、 2)がうまくいかず困っています Set Src = CreateObject("ADODB.Stream") Src.Open Src.Type = 2 Src.Charset = "Shift_JIS" Src.LoadFromFile "test.txt" Set Dst = CreateObject("ADODB.Stream") Dst.Open Dst.Type = 2 Dst.Charset = "UTF-8" Dst.LineSeparator=10 Src.CopyTo Dst Src.Close Dst.SaveToFile "utf-out.txt", 2 Dst.Close 改行コードが何も変化しません。 どうすればよいか教えてください。 ADODBではじめからファイルに書き込んでいく方法でもかまいません。

  • ファイル出力の改行コードをLFに

    また質問です。よろしくお願いいたします。 WindowsXPでperl5.8.7の環境です。 出力したファイルの文字コードをEUC、改行コードをLFで出力をしようとしています。 なお入力、出力ファイルには日本語が含まれています。 文字コードは希望通りいくのですが改行コードがうまくいきません。 Windowsのデフォルト改行コードCR+LFが出力されてしまいます。 (Terapad(エディタ)の改行コード表示がこうなっています。) (1)binmode(OUT);で行うと、 Wide character in print at jisyo01.pl line 63, <IN> line 97. というエラーが表示され、出力されない。 (2)$xxx[$i] =~ s/\x0D\x0A/\x0A/g; で改行コードを置換しようとしても、置換されず、 CR+LFである。 (3)$/ = pack("C", hex("A"));で 改行コードをchompした後、print OUT "$/";としても、 CR+LFのままである。 上手くいきません。いい方法ないでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • 【正規表現】【javascript】CR、CR・LF、LF改行コードをLFにしたい

    CR、CR+LF、LFのシステムによって異なる3種類の改行コードを LFに置換したいです。 変数hogeに置換対象の文字列が入っているとして、 hoge.replace(/\r\n/g,"\n").replace(/\r|\n/g,"\n"); とreplaceを使って置換してみました。 うまくいってるようですが、replaceを二度使ってるところが、カッコ悪いなぁと思います。 replace一回ですむような方法がありましたら教えてください。

  • 改行コード

    Sn Uploaderと言う所でupload.cgiを 落としたのですがエラーが出ます。 多分改行コードが原因だと思うのですが、 upload.cgiの改行コードをLFにする仕方が分かりません。 windowsの場合は秀丸エディタでファイル→エンコードの種類 改行=LFにすれば良いのは分かりますが、 Linuxでは如何すれば良いのでしょうか? 全くの素人ですが宜しくお願いします。

  • 改行コードについて

    こんにちは。 私はFedoraCore3を使用しています。 SSH接続でPoderosaを使いはじめてかなり経つのですが サーバーを立ててからずっと改行コードをCRでやっていました。 で、最近Linuxの改行コードはLFという事を知りました。 今の所、CRでやっていて 改行されなかったりする事もなく特に異常は ないのですがこのままCRでやってても問題ないのでしょうか? それとも、これからはLFでやったほうがいいですか? もう一つなんですがこの改行コードというのは viで編集しているの時は関係ないのですか? (今まで異常がないため) よろしくお願いします。

  • 改行コードの変換方法

    Excelシート内にあるテキストボックスの改行コード(LF)が多数存在してます。 これを改行コード(CRLF)に簡単に変換する方法はありますか? 対象文字を選択してExcelの置換機能で変換できませんか?

  • 改行コードと出力

    今日授業で改行コードについて習ったんですが\nはわかります。 printf("zz\n");や putchar('\n');などで使えば改行になります。 意味がわからないのはCRLFという改行コードのことです。 これはどのようにして使用するのでしょうか? printf("zzCRLF")としても全然改行にならないのですが・・ 後出力画面に\\ と \"に出力する方法がわかりません。 printf("\\");としても\1個だけ printf("\\\");とすればエラーがでます。

C形鋼のテーパーとは?
このQ&Aのポイント
  • C形鋼の内フランジ部がテーパ面になっている理由とは?
  • テーパ面を有効利用する方法について
  • C形鋼のテーパーに関する情報をまとめました。
回答を見る