GNU/Linux >> LINUX-Kenntnisse >  >> Linux

sed - wie man Regex-Gruppen mit sed erstellt

Das meinen Birei und Thor:

sed -r "s/([a-z]*-[a-z]*-)([0-9]*-)([a-z]*-)(.*)/\1\n\2\n\3\n\4/"

Ausgabe:

test-artifact-
201251-
balbal-
0.1-SNAPSHOT.jar

Sie müssen Klammern maskieren, um Ausdrücke zu gruppieren:

\([a-z]*-[a-z]*-\)\([0-9]*-\)\([a-z]*-\)\([.]*SNAPSHOT.jar\)

Und verwenden Sie sie mit \1 , \2 usw.

BEARBEITEN :Beachten Sie auch kurz vor SNAPSHOT dass [.] wird nicht passen. Innerhalb von Klammern . ist wörtlich. Es sollte [0-9.-]* sein


Tatsächlich könnte awk für diese regulären Zeichenfolgen das Gruppieren ersparen. :)

Geben Sie einfach die gewünschte Teileindexnummer ein:

awk 'BEGIN{FS=OFS="-"}{print $1,$2,$5,$6}' 

Ausgabe:

kent$  echo "test-artifact-201251-balbal-0.1-SNAPSHOT.jar"|awk 'BEGIN{FS="-";OFS="-"}{print $1,$2,$5,$6}'
test-artifact-0.1-SNAPSHOT.jar

Linux
  1. So verfolgen Sie Python-Skripte mit trace.py

  2. Wie lösche ich Ordner mit Regex vom Linux-Terminal

  3. So entfernen Sie Nicht-ASCII-Zeichen mit sed

  4. Wie fülle ich eine Datei mit FF mit dd auf?

  5. Warum verwendet sed nicht standardmäßig den erweiterten Regex-Modus?

Wie man Gruppen in Linux auflistet

So entfernen Sie Zeilen aus einer Datei mit dem Sed-Befehl

BENUTZUNG DES SED-EDITORS

Gewusst wie:Eine Einführung in die Verwendung von Git

Wie man mit PHP eine Verbindung zu MySQL herstellt

Unix Sed Tutorial:So schreiben Sie mit Sed in eine Datei