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

Regulärer Ausdruck mit sed

Ihr Hauptproblem ist, dass Sie versuchen, / zu verwenden als Trennzeichen, wenn / ist auch ein Zeichen, das Sie analysieren werden.

Sie müssen ein anderes Trennzeichen verwenden, z. B. ein Rohr. Passen Sie alles und einen / an , dann verwenden Sie \( und \) (Erfassungsgruppen), indem Sie den Teil abgrenzen, den Sie extrahieren möchten, und verwenden Sie \1 , wobei diese Gruppe gerendert wird:

echo "yourstring" | sed 's|.*/\([^/]*\)$|\1|'

Möglicherweise funktioniert es ohne Erfassungsgruppen:Einfach alles bis zum letzten / fallen lassen :

echo "yourstring" | sed 's|.*/||'

Warum nicht basename verwenden dafür? Zum Beispiel:

for file in *mp3; do basename "$file"; done

Linux
  1. Bearbeiten von Text auf der Kommandozeile mit sed

  2. Mehrere Muster gleichzeitig mit dem Sed-Befehl verwenden

  3. Ergänzung mit „sed“?

  4. Müssen Regex-Zeichen in Sed maskiert werden, um als Regex-Zeichen interpretiert zu werden?

  5. Die Definition eines regulären Ausdrucks?

Erste Schritte mit regulären Ausdrücken

Bash + Name durch regulären Ausdruck überprüfen?

10 praktische Beispiele für Regex mit grep

Verwenden von sed zum Teilen einer Zeichenfolge mit einem Trennzeichen

sed Zeile mit Leerzeichen in eine bestimmte Zeile einfügen

grep Extraktnummernbereich