1

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

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

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

4

2 回答 2

1

为什么不使用参数扩展?参数扩展比您拥有的命令、管道和外部命令花费更少的处理能力:

start="${PWD#/}"; start="${start%%/*}"
end="${PWD/*\//}"
printf '/%s/…/%s $ ' "$start" "$end"
于 2013-04-09T01:04:23.623 回答
0

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

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

于 2013-04-09T00:27:09.307 回答