如何在匹配模式后插入字符串

时间:2016-01-05 02:08:07

标签: shell

我有许多文件包含以下格式的内容:

Class ABC
{
  ...

  function getname(userid)
  {
    ...
    ...
  }

  function getprice(itemid,colorcode)
  {
    ...
    ...
  }
}

我想在文件中添加测试点以检查函数是否已被调用,因此,新文件应如下所示,假设此示例的文件名为/var/www/html/test.php:

Class ABC
{
  ...

  function getname(userid)
  {
    echo /var/www/html/test.php getname(userid) is called
    ...
  }

  function getprice(itemid,colorcode)
  {
    echo /var/www/html/test.php getprice(itemid,colorcode) is called
    ...
  }
}

字符串“echo {file name} {function name} called”将被添加到文件中每个函数的开头。

怎么做?

1 个答案:

答案 0 :(得分:0)

TXR解决方案:

$ txr addecho.txr data
Class ABC
{
  ...

  function getname(userid)
  {
    echo /var/www/html/test.php getname(userid) is called
    ...
    ...
  }

  function getprice(itemid,colorcode)
  {
    echo /var/www/html/test.php getprice(itemid,colorcode) is called
    ...
    ...
  }
}

addecho.txr中的代码:

@(repeat)
@  (cases)
  function @name(@args)
  {
@    (output)
  function @name(@args)
  {
    echo /var/www/html/test.php @name(@args) is called
@    (end)
@  (or)
@line
@    (do (put-line line))
@  (end)
@(end)

data的内容只是逐字逐句。