我意识到类似的问题已经被问到previously,many,times。但是,仍然会出错。我有字符串
dom0Size = ${/ 2E-6 ${position_units}}
我想改为
dom0Size = ${/ ${d}E-6 ${position_units}}
我已经使用sed
来完成类似的特殊任务。我试过了
sed -i "s?dom0Size = \$\{\/ 2E-6 \$\{position_units\} \}?dom0Size = \$\{\/ 2E-6 \$\{position_units\} \}?g" "test.txt"
但即使有所有这些逃避斜杠,我也会收到错误
sed: -e expression #1, char 53: Invalid content of \{\}
有什么建议吗?
答案 0 :(得分:1)
您可以使用以下内容:
sed -i 's?dom0Size = ${/ 2E-6 ${position_units}}?dom0Size = ${/ '${d}'E-6 ${position_units}}?g' test.txt
它使用多个单引号部分来避免对特殊字符进行麻烦处理,并结合您需要扩展的变量。注意不要在引用的部分和变量之间添加任何空格,否则它们将被bash解析为多个标记。
答案 1 :(得分:-1)
如果您知道dom0Size只有一个引用,您可以执行以下操作:
sed -r -i.bak "/dom0Size/s/[0-9]+/$d/2" file
这样可以最大限度地减少担心线路上所有其他特殊字符的需要。正如我在评论中提到的,这取决于线条的独特之处?