sed路径解析不起作用

时间:2013-04-09 00:22:39

标签: regex unix sed

pwd | sed "s%^\(/[^/]*/\).*?\(/[^/]+\)$%\1...\2%"

我不确定为什么这不起作用。我在第一个捕获组之后尝试了贪婪和非贪婪的恒星。我甚至没有使用前瞻或任何东西。它适用于正则表达式测试人员。我试图抓住路径的第一个和最后一个文本部分(压扁它,同时仍然提供我所在的dir的想法)。

这是针对tmux提示行的,所以我有点试图避免引入像perl这样重量级的东西来完成这项工作。

2 个答案:

答案 0 :(得分:1)

为什么不使用parameter expansions?参数扩展的成本 way 比你在那里的命令,管道和外部命令更少的处理能力:

start="${PWD#/}"; start="${start%%/*}"
end="${PWD/*\//}"
printf '/%s/…/%s $ ' "$start" "$end"

答案 1 :(得分:0)

经过几次尝试后我得到了它:

pwd | sed "s%^\(/[^/]*/\).*\(/[^/]*\)$%\1...\2%"