【发布时间】:2018-03-24 21:44:46
【问题描述】:
我已阅读以下内容:
- 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"。但我也没能走到那一步。
我想你们可能知道用包含引号的变量替换字符串的更好方法。
文件1.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 我明白了。感谢阿努巴瓦的建议。我对任何可行的事情都持开放态度。也会尝试做更多的研究。编辑问题以反映这一点。
-
@batMan 是的,就是这样。保持变量中的数据相同。我想用
$var1的内容替换STRING。这就是我卡住的地方。这只是一个极简主义的例子。