0

我是 sed 初学者并尝试对以下字符串进行替换:

a_b0_24[0][1]应该改为 a_b0_24_0__1_

括号内只有数字。括号前的文字只能是数字、字母或下划线。

谢谢

4

3 回答 3

3

看一下这个:

kent$  echo 'a_b0_24[0][1]'|sed 's/[][]/_/g'
a_b0_24_0__1_
于 2013-07-18T15:16:53.900 回答
1

这可能对您有用(GNU sed):

sed 'y/[]/__/' file
于 2013-07-18T21:28:13.010 回答
0

假设您在名为 的 bash 变量中有一些文本TEXT

$ echo $TEXT | sed -e 's/\[\|\]/_/g'

打破它:

  • 匹配括号的正则表达式应该类似于“[|]”。括号是文字,中间的管道表示“或”。但是,由于括号在正则表达式语言中具有元含义,因此您需要对它们进行转义,以便将它们解释为文字(因此是反斜杠)。至于逃离管道,我不完全确定为什么它是必要的,但没有它就行不通。
  • “g”只是表示“对所有匹配项都执行此操作,而不仅仅是第一个匹配项”(它代表“全局”)。
于 2013-07-18T15:21:44.163 回答