greediness in sed

前端 未结 5 591
南旧
南旧 2021-01-16 16:14

I want

ereg ($rat, $dog, $cat)

to become

preg_match (\'#\'.$rat.\'#\', $dog, $cat)

To achieve this, I did

5条回答
  •  萌比男神i
    2021-01-16 17:05

    Note: This also works if you have multiple instances of ereg ($rat, $dog, $cat) on the same line whereas other answers do not:

    $ echo 'ereg ($rat, $dog, $cat)' | sed "s/ereg\([^(]*\)(\([^,]*\),\([^)]*)\)/preg_match\1('#'.\2.'#',\3/g"
    preg_match ('#'.$rat.'#', $dog, $cat)
    

    Example

    $ echo 'ereg ($rat, $dog, $cat) ereg ($rat, $dog, $cat)' | sed "s/ereg\([^(]*\)(\([^,]*\),\([^)]*)\)/preg_match\1('#'.\2.'#',\3/g"
    preg_match ('#'.$rat.'#', $dog, $cat) preg_match ('#'.$rat.'#', $dog, $cat)
    

提交回复
热议问题