Мне нужно выполнить поиск и заменить, чтобы заключить переменную строку в одинарные кавычки (нотация объекта 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->», является переменной и, вероятно, должна храниться в буфере.
Не буферы: вам нужны регулярные выражения с тегами.
sed "s/\(\$my_trips_opts\)->\([a-zA-Z_]*\>\)/\1['\2']/g"
В принципе, в s / patterns / replacement /, если вы заключаете шаблоны в экранированные скобки, вы можете ссылаться на них при замене на \ 1, \ 2 и так далее.