1

Мне нужно извлечь имя файла и каталог, содержащий полный путь (синтаксис DOS). Мне нужно сделать это с помощью sed, так как это часть большего регулярного выражения.

Пример ввода: ..\home\test\somedir\anotherdir\myfile.txt

Ожидаемый результат: anotherdir\myfile.txt

Любая помощь будет принята с благодарностью.

Спасибо

2 ответа2

1

Просто иди на методично. Вы хотите разделить строку на три части: произвольный префикс .* , А затем дважды обратную косую черту, за которой следуют символы без обратной косой черты \\[^\\]* . Захватите то, что следует за последним обратным слешем, и отбросьте остальные.

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

(Остерегайтесь echo поскольку некоторые оболочки расширяют обратные слеши.)

0

Есть ли особая причина не использовать awk?

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .