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.
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 -o
Option, die nur den passenden Text anzeigt.