Have sed make substitute on string but SKIP first occurrence

sed

Solution

You can avoid the problem with `g` and n

Replace all of them, then undo the first one:

sed -e 's/ /\\ /g' -e 's/\\ / /1'

Here's another method which uses the `t` branch-if-substituted command:

sed ':a;s/\([^ ]* .*[^\\]\) \(.*\)/\1\\ \2/;ta'

which has the advantage of leaving existing backslash-space sequences in the input intact.

Problem

I have been through the sed one liners but am still having trouble with my goal. I want to substitue matching strings on all but the first occurrence of a line. My exact usage would be: ``` $ echo 'cd /Users/joeuser/bump bonding/initial trials' | sed <<MAGIC HAPPENS> cd /Users/joeuser/bump\ bonding/initial\ trials ``` The line replaced the space in `bump bonding` with the slash space `bump\ bonding` so that I can execute this line (since when the spaces aren't escaped I wouldn't be able to cd to it). Update: I solved this by just using single quotes and outputting ``` cd 'blah blah/thing/another space/' ``` and then using `source` to execute the command. But it didn't answer my question. I'm still curious though... how would you use `sed` to fix it?

Original source