GNU/Linux >> Tutoriales Linux >  >> Linux

Expresión regular con sed

Tu principal problema es que estás tratando de usar / como separador, cuando / también es un carácter que estarás analizando.

Deberá usar un separador diferente, como una tubería. Haz coincidir todo y un / , luego usa \( y \) (grupos de captura) delimitando la parte que desea extraer, y use \1 , representando ese grupo:

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

Puede tenerlo funcionando sin grupos de captura:simplemente soltando todo hasta el último / :

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

¿Por qué no usar basename? ¿para esto? Por ejemplo:

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

Linux
  1. Usando múltiples patrones a la vez con el comando Sed

  2. ¿Eliminar todos los comentarios de C con Sed?

  3. Bash + Verificar nombre por expresión regular?

  4. ¿Por qué `\d` no funciona en expresiones regulares en sed?

  5. Usando sed para dividir una cadena con un delimitador

Introducción a las expresiones regulares

¿La definición de una expresión regular?

10 ejemplos prácticos de expresiones regulares con grep

línea de inserción sed con espacios a una línea específica

Cómo eliminar el carácter \r con sed

rango de números de extracción de grep