Синтаксис sed
, который вы показываете, не совсем точен; если это сработало, значит, вы использовали:
sed -n '/aStyle.Landscape {/,/}/p'
чтобы вывести строки из 'aStyle.Landscape' в закрывающую фигурную скобку.
Если вы хотите заменить этот абзац, вы можете сделать:
sed '/aStyle.Landscape {/,/}/c\
MImAbstractKeyAreaStyle.Landscape {\
/*** Label Setttings ***/\
label-margin-top: 6.0mm;\
label-margin-left-with-secondary: +1;\
secondary-label-separation: 2;\
...\
}'
Обратите внимание, что за каждой строкой в тексте замены, кроме последней, следует обратный слеш.
Возможно, вам будет лучше использовать файл сценария:
sed -f sed.script css.file
Когда я запустил приведенный выше скрипт, дословно скопировал этот ответ в файл 'xx' на фрагменте CSS из вопроса (в 'xx.css'), используя sh xx < xx.css
, я получил вывод:
/*** Debugging ***/
draw-button-bounding-rects: false;
draw-button-rects: false;
debug-touch-points: false;
draw-reactive-areas: false;
}
MImAbstractKeyAreaStyle.Landscape {
/*** Label Setttings ***/
label-margin-top: 6.0mm;
label-margin-left-with-secondary: +1;
secondary-label-separation: 2;
...
}
MImAbstractKeyAreaStyle.Portrait {
Вы сказали, что все в одной строке ... Интересно, как вы запустили сценарий? Если бы все было «в одну строку», мне интересно, если вы делаете что-то вроде:
output=$(sed ... file.css)
с последующим:
echo $output
Это сведет все к одной строке (думайте об этом как о минимизации). Форма CSS будет сохранена, если вы вместо этого напишите:
echo "$output"
Этот вопрос показывает, как возникла проблема сглаживания. Было два уровня интерпретации оболочки (оболочка, которая запускает команду su
, и оболочка, запускаемая командой su
), которых достаточно, чтобы причинить кому-либо головную боль. Удвоения обратной косой черты может быть достаточно, но я бы создал скрипт и запустил его.