Назад | Перейти на главную страницу

заключить текст в кавычки с помощью буфера sed

Мне нужно выполнить поиск и заменить, чтобы заключить переменную строку в одинарные кавычки (нотация объекта 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 и так далее.