views:

42

answers:

2

I need to convert all paths with '\' in them to '/'. The makefile is quite long and doing this manually is impossible.

Is there some way to quickly convert them? Keep in mind that a global replace is not possible because '\' is also used to denote that a command is continued on the following line.

+5  A: 

It looks like you could do this with a sed command:

sed -e 's/\\\(.\)/\/\1/g'

This converts any backslash followed by some other character (which doesn't include newline) into a forward slash followed by that same character.

This command line has a bit of a "leaning toothpick" problem, sorry about that.

Greg Hewgill
No problem - seems to have worked.
George Edison
@Greg Hewgill: You don't have to use `/` as your command separator. This would look a bit nicer as `sed -e 's:\\\(.\):/\1:g`.
Jack Kelly
@Jack Kelly: That's true, but `sed` still requires that you quote the parentheses (otherwise it tries to match them literally).
Greg Hewgill
A: 

I think that Gregs solution was nearly correct, but I would do

sed -e 's/\\\(.\)/\/\1/g'

to make sure that not only the first slash gets replaced. Sorry for not doing this as a comment, but I don't have the privilege yet.

thejh