2012-04-14 17 views
6

Ich habe die folgende Zuordnung:Was bedeutet " 2" am Ende eines regulären Ausdrucks?

Wörter eines Liedes sind in einer Datei namens treppenweg.txt. Welche der folgenden Zeilen wird nach diesem Befehl ausgedruckt werden:

grep -E '(^.{4})(.{2}).*[ ]\2' stairway.txt 

(a) Yes, there are two paths you can go by but in the long run 

(b) Its just a spring clean for the May queen. 

(c) Don't be alarmed now. 

(d) If there's a bustle in your hedgerow. 

(e) Theres still time to change the road you're on. 

Ich verstehe nicht, was macht die \2 am Ende bedeuten?

+0

Haben Sie es versuchen? Sind das Hausaufgaben? – Toto

+0

Treppe verweigert :) – Robbie

Antwort

11

Es ist eine Rückreferenz.

Von http://www.selectorweb.com/grep_tutorial.html:

Rückverweis ist ein Ausdruck \ n, wobei n eine Zahl ist. Es stimmt mit dem Inhalt des n-ten Klammersatzes im Ausdruck überein.

Auch ist die Antwort (d):

$ grep -E '(^.{4})(.{2}).*[ ]\2' test.txt 
If there's a bustle in your hedgerow. 
Verwandte Themen