Necesito extraer el nombre del archivo y el directorio que lo contiene de una ruta completa (sintaxis de DOS). Necesito hacer esto usando sed ya que es parte de una expresión regular más grande.
Entrada de ejemplo: ..\home\test\somedir\anotherdir\myfile.txt
Resultado esperado: otrodir\myfile.txt
Cualquier ayuda sería muy apreciada.
Gracias
Respuesta1
Simplemente hazlo metódicamente. Desea dividir una línea en tres partes: un prefijo arbitrario .*
y luego dos barras invertidas seguidas de caracteres que no sean barras invertidas \\[^\\]*
. Capture lo que hay después de la penúltima barra invertida y suelte el resto.
printf %s "$dos_path" | sed 's/^.*\\\([^\\]*\\[^\\]*\)$/\1/'
(Tenga en cuenta echo
que algunos shells expanden las barras invertidas).
Respuesta2
¿Existe alguna razón particular para no usar awk?
echo $DIR | awk -F'\' '{ print $(NF-1) "\\" $NF }'