Preciso extrair o nome do arquivo e o diretório que contém de um caminho completo (sintaxe DOS). Preciso fazer isso usando sed, pois faz parte de uma expressão regular maior.
Entrada de exemplo: ..\home\test\somedir\anotherdir\myfile.txt
Saída esperada: anotherdir\myfile.txt
Qualquer ajuda seria muito apreciada.
Obrigado
Responder1
Basta fazer isso metodicamente. Você deseja dividir uma linha em três partes: um prefixo arbitrário .*
e, em seguida, duas vezes uma barra invertida seguida por caracteres sem barra invertida \\[^\\]*
. Capture o que vem depois da penúltima barra invertida e elimine o resto.
printf %s "$dos_path" | sed 's/^.*\\\([^\\]*\\[^\\]*\)$/\1/'
(Cuidado, echo
pois alguns shells expandem barras invertidas.)
Responder2
Existe um motivo específico para não usar o awk?
echo $DIR | awk -F'\' '{ print $(NF-1) "\\" $NF }'