sed用反斜杠替换正斜杠

use*_*770 2 makefile sed mingw32

我必须使用mingw32将具有正斜杠的文件名转换为带有反斜杠的文件名.我使用以下sed命令将结果存储在变量中:

ORIGINAL=./a/b/main1.c ./a/b/main2.c ./a/b/main3.c
Run Code Online (Sandbox Code Playgroud)

sed命令:

RESULT=$(shell echo $(ORIGINAL) | sed 's/\//\\/g')
Run Code Online (Sandbox Code Playgroud)

输出结果是:

.\a\b\main1.c .abmain2.c .abmain3.c
Run Code Online (Sandbox Code Playgroud)

如果我直接在bash上运行它,它工作正常.谁能告诉我什么是错的?

谢谢!

Bru*_*ett 7

我试图在makefile中复制你的测试,但我没有你的环境.但是如果我要搜索相同的字符,我不会使用'/'作为命令分隔符.使用另一个字符,例如':'

sed 's:/:\\:g'
Run Code Online (Sandbox Code Playgroud)


jay*_*ngh 6

RESULT=$(sed 's/\//\\/g' <<< "$ORIGINAL")


$ ORIGINAL='./a/b/main1.c ./a/b/main2.c ./a/b/main3.c'
$ echo "$ORIGINAL"
./a/b/main1.c ./a/b/main2.c ./a/b/main3.c
$ RESULT=$(sed 's/\//\\/g' <<< "$ORIGINAL")
$ echo $RESULT
.\a\b\main1.c .\a\b\main2.c .\a\b\main3.c
Run Code Online (Sandbox Code Playgroud)