我需要做一个search和replace封装一个variablesstring在单引号(PHP对象表示法到PHP数组表示法),以下块:
$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;
转换为:
$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;
挑战在于“$ my_trip_opts->”后面的string是可变的,并且可能需要存储在缓冲区中。
不是缓冲区:你需要标记正则expression式。
sed "s/\(\$my_trips_opts\)->\([a-zA-Z_]*\>\)/\1['\2']/g"
基本上,在s / patterns / replacement /中,如果将模式放在括号中,可以用\ 1,\ 2等replace它们。