我已阅读以下内容:的Linux替换为变量包含双引号
- How Do I Use Variables In A Sed Command
- How can I use variables when doing a sed?
- Sed replace variable in double quotes
我了解到,我可以使用sed "s/STRING/$var1/g"
来替换字符串变量的内容。但是,我很难找到如何替换包含双引号,括号和感叹号的变量。
然后,希望能够逃脱报价,我试图通过sed 's/\"/\\\"/g'
管道我的结果,这给了我另一个错误sed: -e expression #1, char 7: unknown command: E'
。我希望能够逃避有问题的字符,然后做可变更换:sed "s/STRING/$var1/g"
。但是我也无法达到那么远。
我想你们可能知道一个更好的方法来用包含引号的变量替换字符串。
FILE1.TXT:
Example test here
<tag>"Hello! [world]" This line sucks!</tag>
End example file
变量:
var1=$(cat file1.txt)
实施例:
echo "STRING" | sed "s/STRING/$var1/g"
希望的输出:
Example test here
<tag>"Hello! [world]" This line sucks!</tag>
End example file
'sed'不是此替换的正确工具。 – anubhava
@anubhava我明白了。感谢Anubhava的建议。我愿意接受任何有效的工作。也会尝试做更多的研究。编辑问题以反映这一点。 – DomainsFeatured
@batMan是的,这就是主意。保持变量中的数据相同。我想用'$ var1'的内容替换'STRING'。这就是我卡住的地方。这只是一个极简主义的例子。 – DomainsFeatured