Sed oneliner 获取文件名和包含目录

Sed oneliner 获取文件名和包含目录

我需要从完整路径(DOS 语法)中提取文件名和包含目录。我需要使用 sed 来执行此操作,因为它是较大正则表达式的一部分。

示例输入:..\home\test\somedir\anotherdir\myfile.txt

预期输出:anotherdir\myfile.txt

任何帮助将不胜感激。

谢谢

答案1

只需按部就班地去做。您需要将一行分成三部分:任意前缀.*,然后是两个反斜杠,后面跟着非反斜杠字符\\[^\\]*。捕获倒数第二个反斜杠后面的内容并删除其余部分。

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

(请注意echo,有些 shell 会扩展反斜杠。)

答案2

有什么特殊原因不可以使用 awk 吗?

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

相关内容