Sed oneliner para obter o nome do arquivo e conter o diretório

1

Eu preciso extrair o nome do arquivo e conter o diretório de um caminho completo (sintaxe do DOS). Eu preciso fazer isso usando sed, pois é parte de uma expressão regular maior.

Exemplo de entrada: .. \ home \ test \ somedir \ anotherdir \ myfile.txt

Saída esperada: anotherdir \ myfile.txt

Qualquer ajuda seria muito apreciada.

Obrigado

    
por Raoul 20.12.2010 / 18:07

2 respostas

1

Apenas vá metodicamente. Você deseja dividir uma linha em três partes: um prefixo arbitrário .* e duas vezes uma barra invertida seguido por caracteres não-barra invertida \[^\]* . Capture o que está depois da última e última barra invertida e descarte o restante.

printf %s "$dos_path" | sed 's/^.*\\([^\]*\[^\]*\)$//'

(Cuidado com echo , pois alguns shells expandem as barras invertidas).

    
por 21.12.2010 / 01:32
0

Existe um motivo particular para não usar o awk?

echo $DIR | awk -F'\' '{ print $(NF-1) "\" $NF }'
    
por 20.12.2010 / 18:22

Tags