• ベストアンサー

リナックスの grepコマンド ¥数字 

リナックスを勉強しているのですが、grepのコマンド \数字  の意味と使い方がよくわかりません。 ネットで検索してみたのですが、あまり詳しい例もなく、いまいち理解できません。 わかりやすい例をつかって説明していただけないでしょうか。 よろしくお願いします。

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

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

linux等のunix系で、使い方に困ったら man コマンド名 と打ってみることです。詳しいマニュアルが読めます。英語でわからない、という場合は「manpage コマンド名」で検索すれば日本語版があることがあります。 さて、man grepの正規表現(と言います。コマンドとは呼びません)の項目を見ると >n が 1 つの数字であるような 後方参照 \n は、正規表現中の括弧で囲まれた n 番目の部分表現がマッチした文字列とマッチします とあります。 ( http://www.linux.or.jp/JM/html/GNU_grep/man1/grep.1.html ) 例えば、 \([a-z]\)-\1 の場合、 a-a は ()の中の[a-z]に先頭の「a」がマッチ →2文字目の-にマッチ →\1は1つめの()の中、つまり「a」となり3文字目の「a」にマッチ →全体としてマッチ b-a は ()の中の[a-z]に先頭の「b」がマッチ →2文字目の-にマッチ →\1は1つめの()の中、つまり「b」となり3文字目の「a」にマッチせず →全体としてマッチせず となります。 この前にでてきた文字列を後で使いたい、というところがミソです。 前のカッコと同じだからといって、 [a-z]-[a-z] としてしまうと、それぞれ別にマッチングが行なわれるので b-a は[a-z]に先頭の「b」がマッチ →2文字目の-にマッチ →[a-z]に3文字目の「a」にマッチ →全体としてマッチ となり、上と結果が変ってきます。 文字列ですから \(CUT\|cut).*\1 などとも書けます。この例では CUTからCUTまでと、cutからcutまでがマッチし、CUTからcutまでや.cutからCUTまでにはマッチしない、となります。

2009googoo
質問者

お礼

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

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

その他の回答 (2)

回答No.2

grep --helpで説明が表示されませんか? Redhatですが、正規表現の選択と解釈方法、その他、出力制御、前後関係の制御とegerp、fgrepの説明が記述されています。

2009googoo
質問者

お礼

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

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

grepは、対象ファイルから、任意の文字列パターンを抜き出すコマンド。 \数字 は、おそらく、正規表現の一つです。

2009googoo
質問者

お礼

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

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

関連するQ&A

  • linuxのgrepコマンドに関して

    linuxのgrepコマンドに関して ファイルの中から、1や2という文字が単独で存在する行を検索したくて grep 1 file名 とするのですが、そうすると11や23など文字が単独ではなく、含まれている行が出力されます。 含まれる、ではなく文字そのものを検索するにはどうしたらよいでしょうか?

  • grepで40~70の数字をリストアップするコマンドを教えてください。

    grepで40~70の数字をリストアップするコマンドを教えてください。 1 2 3 4 5 ・ ・ ・ のように1~100まで改行して数字が書かれているテキストファイルがあります。 40 41 42 ・ ・ ・ 70 という様にgrepコマンドなどで40~70までを数字をリストアップするコマンドはないでしょうか?

  • linuxカーネルとlinuxのコマンドについて

    現在、linuxの勉強をしています。 linux上でのある程度の基本的な操作(あくまでも操作でしかないのですが・・・)は理解したと思い、ちょっと前からカーネルのソースでも見てみようか、と思いはじめてみました。 そこでふと疑問に思ったのですが、カーネルにはリソース管理などがメインですよね? コマンドや、シェルなどの環境はどのようにカーネルと関係してくるのかがさっぱりわかりませんでした。 カーネルのソースにそれらのことや、コマンドなどが書いてあるのかな?と思ってgrepしては見たのですが、よくわかりませんでした。 相当初心者な質問でしょうが、ご存知の方教えてください。

  • grepについて

    Freebsdにおいてgrepというコマンドがあると思いますが、このgrepで特定の階層にある特定のファイルを探すことはできるのでしょうか? あるファイルの中に存在する、特定の文字などを検索するやり方は分かるのですがファイル名を検索しようとしても、やり方が分からずできません。 それとも、もともとgrepコマンドは、あるファイル内に存在する文字を検索するためのコマンドなのでしょうか?? その辺りも、よく分かりません。 他に、grepはこういう時に便利!!みたいな例があれば教えてくださいませ。 ご回答の程、よろしくお願い致します。

  • grep,sedコマンドについて

    昨日に引き続き、またまた質問です。 昨日回答してくださった方、ありがとうございました。 その後自分でも色々勉強しまして、ファイルの中身を処理するにはgrepコマンドとsedコマンドが 有効である事が分かりました。 今回やりたいことは以下のファイルの数字と時間の部分(//のついている2行)の削除です //1 //00:00:03,600 --> 00:00:07,195 xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx //2 //00:00:07,360 --> 00:00:09,635 xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx     ・     ・ (実際のファイルには"//"はついていません) 理想の出力 xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx (xxxxxの部分には英語の台詞が入ります) で、以下が自分が考えた方法です 1.sedコマンドのみで削除 $ sed "/[0-9]*\n[0-9][0-9].*/d" ファイル名 結果 ファイルの内容がすべて表示されるだけ (a) 2.grepコマンドで抽出しパイプ処理 まずgrepで削除部分を抽出 $ grep -P "^[0-9]*\n[0-9][0-9].*" ファイル名 結果 1    00:00:03,600 --> 00:00:07,195    2    00:00:07,360 --> 00:00:09,635         ・         ・    10    11         ・         ・ となり、1~9までの数字と時間はちゃんと表示され 10以降は数字しか出ません。 (b) また -P の部分を -E にすると、何も表示されません (c) (perlの正規表現と拡張正規表現の違いはここでは無いように思えますが・・・) 2は最初でつまづいたのでどのコマンドに渡して行を削除するかはまだ分かりません (d) 削除の際、2行まとめて行うのは、一行ずつ行うと、台詞の部分に数字のみが入っていた場合 削除されるのを防ぐためです 以上長くなりましたが(a)~(d)の質問、疑問に回答していただけると嬉しいです。 よろしくお願いします。

  • grepコマンドのAオプションが使えない

    たすけてください! grep -A 10 検索条件 検索ファイル とコマンドを打つと grep:認識できないフラグ:A と出てきます。 どうしたら使えますか?

  • psコマンドの意味がわからない。

    #]ps aux | grep updatedb root 1510 0.0 0.0 4580 668 pts/0 s 13:57 0:00 grep updatedb 上記でコマンド結果が表示され、updatedbをkill -9したいですが、数字やpts/0などの意味がわからなく困っております。サーバはlinuxです。updatedbは動いているのか不明ですが、動いているのであれば、どの数字をkillすれと良いでしょうか?

  • linux(UNIX) の grep で、あるディレクトリ以下を再帰的に見て、全ての *.html ファイルに grep をかける方法

    linux(UNIX) の grep で、あるディレクトリ以下を再帰的に見て、全ての *.html ファイルに grep をかける方法を教えてください。 簡単な事なのかもしれませんが、コマンドから打つ場合、どのようにすればよいか、分かりません。 Windows の秀丸のgrepなら簡単に出来るのですが。。。 どなたか教えてくださいませ。。。

  • リナックスで

    リナックス勉強中です。 grep rm でコマンド実行したところ、普通の画面に戻れなくなりました。 バックスペースキーで^H デリートキーを押しても^[[3~^ と出てしまい、どうにもなりません。 どうしたら普通のコマンド画面に戻れますか? リナックスは難しいですね。 みなさんも苦労しましたか?

  • UNIXとLinuxのコマンドは同じ?

    例によって、12月で派遣契約を打ち切られた者です。 そこで次はネットワーク系の仕事に入りたいと思うのですが、未経験なので、UNIXのコマンド等を勉強したいと思っております。 Linuxは簡単に手に入ったので、自宅のPCにインストールしたのですが、Linuxのコマンドを覚えれば、そのままUNIXでも使えるのでしょうか。 あるいは面接で、Linuxのコマンドを知っていると言えば、UNIXも使えると認識してもらえるのでしょうか。 よろしくお願いします。