encapsula texto entre aspas com buffer de sed

2

Eu preciso fazer uma pesquisa e substituir para encapsular uma cadeia de caracteres variável entre aspas simples (notação de objeto php na notação array php) de forma que o seguinte bloco:

$my_trip->trip_id = ( $my_trips_opts->trip_id > 0 ) ? $my_trips_opts->trip_id : 1;
$my_trip->trip_name = $my_trips_opts->trip_name;
$my_trip->trip_location_paris = ( $my_trips_opts->trip_location_paris == 'paris' || $my_trips_opts->trip_location_paris == true ) ? true : false;

É convertido para:

$my_trip->trip_id = ( $my_trips_opts['trip_id'] > 0 ) ? $my_trips_opts['trip_id'] : 1;
$my_trip->trip_name = $my_trips_opts['trip_name'];
$my_trip->trip_location_paris = ( $my_trips_opts['trip_location_paris'] == 'paris' || $my_trips_opts['trip_location_paris'] == true ) ? true : false;

O desafio é que a string que segue "$ my_trip_opts- >" é variável e provavelmente precisa ser armazenado em um buffer.

    
por Jaryd Malbin 01.08.2012 / 22:25

1 resposta

3

Não buffers: o que você precisa é de expressões regulares marcadas.

sed "s/\(\$my_trips_opts\)->\([a-zA-Z_]*\>\)/['']/g"

Basicamente, em s / patterns / replacement /, se você incluir padrões em colchetes com escape, você pode se referir a eles na substituição por \ 1, \ 2 e assim por diante.

    
por 01.08.2012 / 22:37

Tags