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

Как изменить одну строку кода в блоке кода из командной строки linux?

У меня есть изменение, которое мне нужно сделать на нескольких разных сайтах и ​​которое, возможно, потребуется внести снова в будущем, поэтому я хотел бы поместить его в сценарий оболочки. По сути, я хочу найти конкретный блок класса в файле css, найти один из его атрибутов и изменить значение этого атрибута.

Так например:

.some-id {
  some-arbitrary-properties
  property-i-want: old-value
  maybe-some-more-properties
}

Я хочу изменить только старое значение в property-i-want, и только если оно находится в .some-id.

Мне очень комфортно с grep, но он работает только по одной строке за раз. Мне несколько менее комфортно с sed, но я не видел способа сделать это без детерминированного набора свойств. Например, я мог бы заменить блок sed целиком. Но я хочу оставить все остальные свойства в блоке в покое.

Я бы предпочел не использовать perl или python, но могу. Я хотел бы быть кратким, потому что он состоит из однострочных скриптов.

Напишите небольшую программу, используя библиотеку CSS на любом языке. Вы упомянули Perl, возможно CSS :: Tiny.

Однострочники переоценены, их трудно читать. Выбор стиля, чтение свойства, изменение свойства в случае условия - это более одного шага.