我有一个文件test.txt,数据init=6'b000000;我想在bash文件中使用vim脚本将其替换为init=6'b110111;。我得到的错误是
我正在使用下面的命令。
vim -c '%s/init=6'b000000;/init=6'b110111;/g | write | quit' test.txt
在vim中可以完美运行,在bash中不行。
这与以下情况无关 Vim
你不能将一个单引号嵌入到一对其他单引号中。shell在将命令行参数传递给调用的命令之前会对它们进行解析,它无法按照你定义的方式处理内部的单引号。
里面的单引号字面需要保留后再传给命令。所以使用双引号并转义内部的引号
vim -c "%s/init=6\'b000000;/init=6\'b110111;/g | write | quit" file
或使用单引号,但在里面加入一个多级双引号。
vim -c '%s/init=6'"\'"'b000000;/init=6'"\'"'b110111;/g | write | quit' file