• ベストアンサー

grepについて

またまた質問させていただきます。 grep '\(.\)\1' っていったいどういうことを しているのでしょうか?教えてください。

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

  • ベストアンサー
  • mitsu-s
  • ベストアンサー率25% (7/27)
回答No.3

見づらいので全角で書きます。 ¥(参照文字列¥)という部分、質問では参照文字列は.(ピリオド)になっていますが、このピリオドは任意の文字列を意味します。 で、その後の¥1これは、簡単にいうと「1番目にでてきたカッコの参照文字列と同じ物を前方一致で探す」 事を意味します。 なので、質問のコマンドでは任意の文字列が2つ続く箇所、つまり aa とか 11 とかを探しに行きます。 例えば、質問の内容を grep ’¥(..¥)¥1’ とした場合、2文字の並びが2回続く場所を前方一致で探しに行きます。 abab 5252 とか・・。 こんなところでどうでしょう?

janne
質問者

お礼

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

その他の回答 (2)

  • alfeim
  • ベストアンサー率58% (114/195)
回答No.2

まず、\(と\)は括った内容をグループ化します。また\数字で表されたオペレータでの参照になります(数値は正規表現内でのカッコのセットを前方から順番に1,2,3・・・と順番に付けられます)。 なので\(.\)\1を解析すると括弧で括られた.で任意の一文字がヒット、その後に続く\1は\(.\)でのマッチ結果を表すので結果として直前の文字と同じ物にマッチします。 この辺を良く知りたいのであれば「詳説 正規表現」という本を一読する事をオススメします。

参考URL:
http://www.amazon.co.jp/exec/obidos/ASIN/4900900451/ref=sr_aps_d_1_2/250-4066937-1847407
janne
質問者

お礼

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

  • ranx
  • ベストアンサー率24% (357/1463)
回答No.1

同じ文字が二つ続く個所("xx","11","%%"など)を探します。

janne
質問者

補足

回答ありがとうございます。 えぇっと。。。すいません。 \(.\)\1のどの辺から同じ文字が二個続くところを 探すということがわかるのでしょうか?

関連するQ&A