正则表达式替换(sed或perl)变量捕获

时间:2014-04-01 13:36:22

标签: regex perl bash sed

我需要对包含以下内容的文件执行正则表达式捕获/重新生成。虽然我可以匹配东西,但是我无法进行捕获替换。

我想执行以下操作:

  1. 在每个实例中捕获的内容都不同。
  2. 在引用表名的复制行之前添加一个新行。
  3. 因此,例如,copy mytable(将成为hello mytable\ncopy mytable(


    示例输入

    copy tablename(
            preferredid= 'c0»',
            qid= 'c0»' with null(''),
            qpi= 'c0»',
            ptid= 'c0»' with null(''))...
    
    into '/idata2/backup/core/eq.ingres'
    

2 个答案:

答案 0 :(得分:2)

试试这个:

sed 's/^copy \([^(]*\)($/hello \1\ncopy \1(/' 

答案 1 :(得分:0)

使用perl one-liner

perl -i -pe 's/^(?=copy (\w+)\()/hello $1\n/' file