echo "AXIS2C_HOME=/usr/local/Axis2C" | sed 's/(^AXIS2C_HOME=) (.*)/ \2 \1/'

The output i am expecting is /usr/local/Axis2C AXIS2C_HOME=

I cant figure out what i am doing wrong :(

link|improve this question

Except for the space you have after _HOME=) ...which isn't present in the imput, your statement is effectively the same as Steven D's solution in his comment to jsbillings' answer... ie. your form is using extended regular expressions. (-r is required) – Peter.O Feb 21 '11 at 10:10
feedback

3 Answers

up vote 3 down vote accepted

The trivial answer is "more backslashes, less spaces":

echo "AXIS2C_HOME=/usr/local/Axis2C" | sed 's/\(^AXIS2C_HOME=\)\(.*\)/\2 \1/'

But the broader answer is, "wait, what are you trying to do?" Do you want the key-value pairs to be split into useful variables, or are you really just trying to munge the input into the reverse syntax in order t feed it to something else?

link|improve this answer
Thanks! I am just messing around :) – Ricko M Feb 8 '11 at 9:44
feedback

You have an erroneous space after the =. Try:

sed 's/\(^AXIS2C_HOME=\)\(.*\)/\2 \1/'

The following also works and is a bit shorter. \1 will be anything before the first /

sed 's|^\([^/]*\)\(/.*\)|\2 \1|'
link|improve this answer
feedback

Sed is great, but Perl can do this too, and it doesn't require the forest of backslashes:

% echo "AXIS2C_HOME=/usr/local/Axis2C" | perl -pe 's/(^AXIS2C_HOME=)(.*)/\2 \1/'
/usr/local/Axis2C AXIS2C_HOME=

Plus, you've got the full power of the regular expression engine, so you can do even more complex patterns.

link|improve this answer
2  
You could also avoid the forest of backslashes if you have a sed such as GNU sed that supports extended regular expressions: echo "AXIS2C_HOME=/usr/local/Axis2C" | sed -r 's/(^AXIS2C_HOME=)(.*)/\2 \1/' – Steven D Feb 7 '11 at 18:32
@Steven D: The forest is my friend... (bear pun half intended... the other half is: I think I'd be lost without them :) ... but I am considering it, now that you've mentioned -r ... (I've thought about it.. I'll stick with the backslashes, otherwise I'll lose the ability to understand everyone else's sed statements :) – Peter.O Feb 21 '11 at 10:39
feedback

Your Answer

 
or
required, but never shown

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