Sed oneliner para obtener el nombre del archivo y el directorio que lo contiene

Sed oneliner para obtener el nombre del archivo y el directorio que lo contiene

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 echoque algunos shells expanden las barras invertidas).

Respuesta2

¿Existe alguna razón particular para no usar awk?

echo $DIR | awk -F'\' '{ print $(NF-1) "\\" $NF }'

información relacionada