Острота Sed для получения имени файла и содержащий каталог

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

Пример ввел:..\home\test\somedir\anotherdir\myfile.txt

Ожидаемый вывод: anotherdir\myfile.txt

Любая справка значительно ценилась бы.

Спасибо

1
задан 20.12.2010, 19:07

2 ответа

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

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

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

1
ответ дан 17.12.2019, 00:28

Существует ли конкретная причина не использовать awk?

echo $DIR | awk -F'\' '{ print $(NF-1) "\\" $NF }'
0
ответ дан 17.12.2019, 00:28

Теги

Похожие вопросы