Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

How can I improve pwd | sed -e 's/.*\/\(.*\)\/\(.*\)\/\(.*\)/...\1\/\2\/\3/' to only return the ellipsis if pwd is greater than three levels deep?

The goal is to avoid ...home/example/foo, but still receive ...example/foo/bar.

share|improve this question
up vote 3 down vote accepted
pwd | sed -e 's/\/.*\/\(.*\)\/\(.*\)\/\(.*\)/...\1\/\2\/\3/'

A tip for readability is to use another regex delimiter character when you need to use a lot of slashes:

pwd | sed -e 's#/.*/\(.*\)/\(.*\)/\(.*\)#...\1/\2/\3#'
share|improve this answer
read his question again man. By the way, sed -r would make it neater he can replace his \( with ( but look at what he's asking. – barlop Jun 13 '12 at 5:32
@barlop: It works here. I get /home/daniel/foo but ...daniel/foo/bar, which seems to be exactly what he wants. At a first glance I think it is you who should read the question again. EDIT: at a second, third and fourth glance, I still think it is you who should read the question again :-) – Daniel Andersson Jun 13 '12 at 5:36
@barlop: No. In his example he would have gotten the ellipsis if pwd was >=3 levels deep, he wanted this to be changed to >3. Try the command locally to see how it behaves. EDIT: This answered a now removed comment. – Daniel Andersson Jun 13 '12 at 5:44
sorry.. you're right. you fixed it functionally and made it neater – barlop Jun 13 '12 at 5:44
@barlop: No worries. At least here it's very early, so I might have written anything at this point of day, so you have every reason to be suspicious :-D – Daniel Andersson Jun 13 '12 at 5:47

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.