我正在使用 的 Windows 端口sed.exe
。
当我直接从命令行执行类似操作时:
sed.exe -i "s/WRITE;/WRITE; TRUNCATE TABLE `Team_matchdayResults`;/g" my_script.sql
一切都运行顺利,文件中的文本部分也发生了变化my_script.sql
。
现在我想在文件内执行完全相同的操作.bat
。我知道我必须在那里转义双引号,所以我这样做了。
sed.exe -i ""s/WRITE;/WRITE; TRUNCATE TABLE `Team_matchdayResults`;/g"" my_file.sql
不幸的是,这以以下错误结束
sed.exe: -e expression #1, char 15: unterminated `s' command
我想我必须转义更多内容,但我似乎不知道具体是什么。我读到过应该;
在批处理文件中进行转义,但只能在FOR
循环中进行。然而,这并没有给我带来任何进一步的帮助。
我还需要逃避什么呢?
答案1
我下载了适用于 Windows 的 GNU Sed只是为了测试一下,我发现你不需要转义任何东西就可以在.bat
文件中工作。引号"
及其内容被正确解释。
test.txt
内容:
Test0 WRITE;
Test1 WRITE
Test2 WRITE;
test.bat
内容:
sed -i "s/WRITE;/WRITE; TRUNCATE TABLE `Team_matchdayResults`;/g" test.txt
test.txt
运行后,新增内容为test.bat
:
Test0 WRITE; TRUNCATE TABLE `Team_matchdayResults`;
Test1 WRITE
Test2 WRITE; TRUNCATE TABLE `Team_matchdayResults`;
你试过吗赛格威? 它允许在 Windows 上运行和编写常见的 UNIX 命令。