Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I need to remove the part

man1/bmtoa.1.gz

from the full path

/usr/share/man/man1/bmtoa.1.gz

so that it results in

/usr/share/man/

I've tried ${path#[!/]*/*} and ${path#/*/*} but both result in wrong paths.

share|improve this question
    
If you have received an acceptable answer, then please consider accepting it by clicking on the outline of a checkmark to the left of the answer. This will aid future users who have the same question. –  Kevin M Apr 26 '10 at 18:26

2 Answers 2

this will work ${path%/*/*}, but works from the back to the front. here is a good how-to for chopping strings in bash.

share|improve this answer

If you could deal with /usr/share/man/man1, then you could do dirname /usr/share/man/man1/bmtoa.1.gz, but since you stated that you need the man1 to also come off, so you'll have to daisy-chain them:

dirname `dirname /usr/share/man1/bmtoa.1.gz`
share|improve this answer
    
It doesn't use shell expansion as requested by to me dirname looks much saner and simpler. –  Jason Tan Apr 25 '10 at 15:18

Your Answer

 
discard

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.