2017-11-15 3 views
1

私はこの使用しています:grep regexpでマッチを繰り返すことはできますか?

grep '\s[A-Z]+\s[A-Z]+\s' file.txt -Po 

だけ試合に私が何をしたいのか

grep '\s([A-Z]+)\s%1\s' file.txt -Po 

のようなものである

ABC DE 
AB AB 
DEF GHIFOO 

などと一致しますどちらが

AB AB 
BC BC 
DDD DDD 

など

それも可能だ場合、私は、うまくいかないことができますだけではどのようにしましょう。それは...ですか?

おかげ

答えて

1

最初のキャプチャグループはありません%1として\1ように指定する必要があります

サンプルfile.txt

grep -Po '\b([A-Z]+)\s\1\s*' file.txt 

AA AB 
AB AB 
BC BC 
DDD DDD 
NN WN 

が更新正規表現パッテンを考えてみましょう

出力:

AB AB 
BC BC 
DDD DDD 

ボーナス反対アクションのアプローチ:

grep -Po '\b([A-Z]+)\s(?!\1)[A-Z]+\s*' file.txt 

出力:

AA AB 
NN WN 
+0

くそ、とても近く、ありがとうございました! – Codemonkey

+1

@コドモンキー、歓迎です – RomanPerekhrest

+0

私はどのように私は反対を行うと知っていますか? 'BC BC'にマッチしますが、' BC BC'にマッチしません... – Codemonkey

関連する問題