プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (3件)

linux等のunix系で、使い方に困ったら


man コマンド名
と打ってみることです。詳しいマニュアルが読めます。英語でわからない、という場合は「manpage コマンド名」で検索すれば日本語版があることがあります。

さて、man grepの正規表現(と言います。コマンドとは呼びません)の項目を見ると
>n が 1 つの数字であるような 後方参照 \n は、正規表現中の括弧で囲まれた n 番目の部分表現がマッチした文字列とマッチします
とあります。
( http://www.linux.or.jp/JM/html/GNU_grep/man1/gre … )

例えば、
\([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までにはマッチしない、となります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/03/12 14:23

grep --helpで説明が表示されませんか?


Redhatですが、正規表現の選択と解釈方法、その他、出力制御、前後関係の制御とegerp、fgrepの説明が記述されています。
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/03/12 14:24

grepは、対象ファイルから、任意の文字列パターンを抜き出すコマンド。



\数字 は、おそらく、正規表現の一つです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/03/12 14:25

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

このQ&Aに関連する記事