Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用sed替换";使用linux shell脚本\&引用;_Linux_Shell_Sed - Fatal编程技术网

使用sed替换";使用linux shell脚本\&引用;

使用sed替换";使用linux shell脚本\&引用;,linux,shell,sed,Linux,Shell,Sed,我需要替换字符“\”,但它不起作用。我的剧本如下。 我正在使用相同的脚本进行其他许多替换,但不知何故,这不起作用 export VCA='http:\\/\\/localhost\\/dev1' export VCB='https:\\/\\/www.mydomain.com' sed "s~${VCA}~${VCB}~g" tmp2.sql > tmp3.sql 我不再看到错误,但它不会替换字符串。尝试: VCA='http://localhost/dev1' VCB='https:

我需要替换字符“\”,但它不起作用。我的剧本如下。 我正在使用相同的脚本进行其他许多替换,但不知何故,这不起作用

export VCA='http:\\/\\/localhost\\/dev1'
export VCB='https:\\/\\/www.mydomain.com'
sed "s~${VCA}~${VCB}~g" tmp2.sql > tmp3.sql
我不再看到错误,但它不会替换字符串。

尝试:

VCA='http://localhost/dev1' 
VCB='https://www.example.com'
sed "s~${VCA}~${VCB}~g" tmp2.sql > tmp3.sql


注意:stackoverflow的答案文本编辑器似乎不喜欢在代码中包含www.mydomain.com,因此
$VCB
使用一个可以根据需要更改回的伪值。

尝试将反斜杠翻倍甚至四倍,或者,如果这些反斜杠是URL中使用的架构指示符/路径,则将其更改为此处使用的内容,正向斜杠。可能与的重复。另请参见。您只需要替换HTTP->HTTPS,对吗?如果是这样的话,就不要用斜杠了。请让问题包括
tmp2.sql
中的一些相关行。另请参见,(U&L.SE),(so),(AskU),等等。它成功了!但是,当需要替换添加的全文时,无法工作:http:\\/\\/localhost\\/dev1到https:\\\/\\\\\/www.mydomain。com@Roni,请用有问题的“全文”引用实际代码。@Roni您的正则表达式要求在每个斜杠之前有一个文字反斜杠。斜杠本身不是特殊字符;如果像您已经做的那样,使用
~
作为分隔符,则斜杠不需要任何特殊处理。另一方面,
export
语句在这种情况下似乎是多余的(当然,在子流程确实需要看到这些变量的情况下,您也可能在其他情况下使用这些变量)@Roni bottmi行表示sed不理解字符串,它查找regexp并用支持反向引用的文本替换匹配文本。要让sed将其regexp和替换文本视为文字字符串(请参阅),这是非常困难的。因此,如果您想用另一个文字字符串替换文字字符串,那么您应该只使用理解字符串的工具,例如awk。如果您按照问题下方评论中的要求向问题添加示例输入/输出,我们可以帮助您。