So zeigen Sie Regexp-Textteile an

So zeigen Sie Regexp-Textteile an

Ich habe viele Dateien, deren Zeilen aussehen wie

lotsofblah/XY##_####_morefoo

wobei # eine Zahl ist. Jetzt möchte ich nur die Teile anzeigen

YZ##_####

in der Bash, natürlich jeweils in einer neuen Zeile.

Antwort1

Angenommen, Sie möchten, dass XY zwei beliebige Buchstaben sind ...

Etwas wie

grep -Eo "[A-Z]{2}[0-9]{2}_[0-9]{4}" file

Würde übereinstimmen mit [zwei Buchstaben][zwei Zahlen]_[vier Zahlen]

Wenn Sie möchten, könnten Sie es etwas genauer machen und sicherstellen, dass davor ein / und dahinter ein _ steht, aber das ist ein Ausgangspunkt.

Stellen Sie dies aus man grep zusammen:

-E, --extended-regexp
          Interpret PATTERN as an extended regular expression (see below)

-o, --only-matching
          Show only the part of a matching line that matches PATTERN.

Undhttp://www.regular-expressions.info/reference.html

Antwort2

Ich nehme an, dass XY und YZ dasselbe sind, und ich werde sie genauso behandeln wie XY

egrep "XY[0-9]{2}_[0-9]{4}" filename -o

Der Schlüssel ist die -oOption, die nur den passenden Text anzeigt.

verwandte Informationen