查找并替换特定模式后的第一个字符

时间:2012-06-07 19:10:04

标签: regex sed

当前文字

Variable length text = some string(some more text

更改为

Variable length text = some string(addition some more text

只有在遇到“=”字符后,才需要在一行中的第一个括号后添加某个文本。另一个条件是忽略“=(”这样的模式,这实际上意味着你应该忽略只有“=”和“(”

之间的空格的模式

我的尝试:

sed -e "s#*=(\w\()#\1(addition#g"

感谢您的期待!

2 个答案:

答案 0 :(得分:1)

根据您的需要调整此项:

$ echo 'Variable length text = some string(some more text' |\
sed 's/^[^=]*=[^(]*[[:alnum:]][^(]*(/&addition /'

匹配:

  1. 字符串的开头
  2. =任何次数之外的任何内容
  3. =
  4. (任何次数之外的任何内容
  5. 字母数字字符
  6. (任何次数之外的任何内容
  7. (
  8. ...并将匹配的字符串替换为' addition'。 输出是

    Variable length text = some string(addition some more text
    

答案 1 :(得分:1)

in perl

s/(.*?=[\s][^(]+?)\((.*)/$1(aditional text $2/