2013-04-09 115 views
1

pwd | sed "s%^\(/[^/]*/\).*?\(/[^/]+\)$%\1...\2%"sed路径解析不起作用

我不知道为什么这不起作用。在第一个捕获小组之后,我尝试了贪婪和非贪婪的恒星。我甚至不使用lookahead或任何东西。它在正则表达式测试器中工作。我试图抓住路径的第一个和最后一个文本部分(在挤压它的同时仍然提供我所在的目录的概念)。

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

回答

1

为什么不使用parameter expansions?参数扩展成本更低方式处理能力,不是一个命令,管你有没有外部命令:

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

这是什么魔法?我第一次看到它。看起来像某种** **旨在做我想要的**。 *表情* – 2013-04-09 01:18:15

+0

@StevenLu我添加了一个链接来描述魔法的答案。 – kojiro 2013-04-09 01:21:57

0

我得到了几个尝试后:

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