GNU/Linux >> Linux Esercitazione >  >> Linux

Espressione regolare con sed

Il tuo problema principale è che stai cercando di usare / come separatore, quando / è anche un carattere che dovrai analizzare.

Dovrai utilizzare un separatore diverso, ad esempio un tubo. Abbina tutto e un / , quindi utilizza \( e \) (gruppi di acquisizione) delimitando la parte che si desidera estrarre e utilizzare \1 , rendendo tale gruppo:

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

Potresti farlo funzionare senza gruppi di acquisizione:basta eliminare tutto fino all'ultimo / :

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

Perché non usare basename per questo? Ad esempio:

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

Linux
  1. Come ottenere la portabilità con Sed -i (modifica sul posto)?

  2. Aggiunta con 'sed'?

  3. Hai bisogno di sfuggire ai caratteri Regex in Sed per essere interpretato come caratteri Regex?

  4. Utilizzo di sed per dividere una stringa con un delimitatore

  5. Come rimuovere il carattere \r con sed

Iniziare con le espressioni regolari

10 esempi pratici di regex con grep

sed inserisce una riga con spazi in una riga specifica

Linux GUI Regular Expression File Renamer (con sostituzione)

Come sostituire in modo ricorsivo i caratteri con sed?

grep estrarre l'intervallo di numeri