• ベストアンサー

リナックスの 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