Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

Is it possible to do it in one liner?

I have an output like this:

"First line" - Description  
" Second line" - Description  
"Third line" - Description  
" Fourth line" - Description  

This input is generated automatically.

I want to replace the first occurrence of " (quotation mark + space) with " (quotation mark) for each line. If I apply the substitution globally, it will also change every occurrence of line" - to line"-, so I was wondering if it is possible to use a sed one liner to accomplish this.

I have tried using ^ like this

sed -r ':a;N;$!ba;s/(\^\" )/\"/g'

But it's not working, it doesn't replace anything. I tried

sed -r ':a;N;$!ba;s/(^|\" )/\"/g'

and it replaces all the occurrences. I've just started to use sed, so I don't really know if I'm doing something wrong.

What am I missing here?

share|improve this question
add comment

1 Answer

up vote 3 down vote accepted

You're overthinking it. sed replaces only the first instance on a line by default (without the /g modifier), although you still want to anchor because you don;t so much want the first instance in the line as the one at the start of the line; and you usually don't need the explicit line actions you're trying to use (why?).

sed 's/^" /"/'
share|improve this answer
    
Thanks! I thought it was necessary to explicitly declare the line actions when working on a file, read about it and just kept on using them. I really was over-thinking it, that couldn't be simpler and it does the trick :) –  Steve B. Apr 9 '12 at 3:33
    
I'm tempted to say those commands are pretty much obsolete; it is possible to do quite complex multiline things with them, but it's not easy to do so and these days you're really better off using perl/python/ruby/whatever instead. –  geekosaur Apr 9 '12 at 3:40
add comment

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.