Я должен извлечь имя файла и содержащий каталог от полного пути (синтаксис DOS). Я должен сделать это использование sed, поскольку это - часть большего регулярного выражения.
Пример ввел:..\home\test\somedir\anotherdir\myfile.txt
Ожидаемый вывод: anotherdir\myfile.txt
Любая справка значительно ценилась бы.
Спасибо
Просто пойдите в нем систематически. Вы хотите разделить строку на три части: произвольный префикс .*
, и затем дважды обратная косая черта, сопровождаемая символами необратной косой черты \\[^\\]*
. Получение, что после предпоследней обратной косой черты и отбрасывает остальных.
printf %s "$dos_path" | sed 's/^.*\\\([^\\]*\\[^\\]*\)$/\1/'
(Остерегайтесь echo
поскольку некоторые оболочки разворачивают обратные косые черты.)