如何更换含括号的文本模式?(How to replace a text pattern contai

2019-06-25 11:12发布

我想,以取代含支架与另一指令递归中的所有文件的特定指令。

例如,

mov r1, [r1, r2]

sub [r8, r9], r10

当我使用

 sed -i.bak "s/mov r1, [r1, r2]/sub [r8, r9], r10/g" file.S

这是行不通的。

我怎样才能做到这一点?

Answer 1:

两件事情。

  1. 你需要逃避的比赛中表现的括号,他们在正则表达式的特殊含义。
  2. 你应该保护壳扩张sed脚本。 使用双引号强制扩展。 单引号交换机扩展了。

从而:

's/mov r1, \[r1, r2\]/sub [r8, r9], r10/g'

虽然工作了正确的脚本,你可以直接跳过内联编辑,也许。 像这样:

sed 's/mov r1, \[r1, r2\]/sub [r8, r9], r10/g' file.S


Answer 2:

与尝试转义括号's/mov r1, \[r1, r2\]/sub \[r8, r9\], r10/g'



Answer 3:

摆脱括号 - [] - 在sed的替换命令将你期望的方式处理您的文件。 这里是你的命令改写括号转义:

sed 's/mov r1, \[r1, r2\]/sub [r8, r9], r10/g' file.S


文章来源: How to replace a text pattern containing brackets?