2013-04-09 83 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%"