Команда sed для пакетного изменения заполнения и хода SVG - PullRequest
0 голосов
/ 08 февраля 2020

У меня есть папка с 300 иконками SVG. Это все черное. Я хотел бы изменить цвета заливки и обводки всех значков (на оттенки синего). Это очень тяжелая работа, чтобы сделать 300 через Inkscape. Я видел несколько примеров использования команды sed для пакетной обработки. Но ни одно из них не отвечало моим требованиям. Может ли кто-нибудь помочь мне с этим? Я также открыт для других вариантов. Я попробовал IcoMoon как вариант GUI, но не уверен, как изменить цвет в нем как пакет.

Я использую Ubuntu 18.04.

1 Ответ

1 голос
/ 08 февраля 2020

Я не знаю точно структуру вашего SVG, но я предполагаю, что вы используете значки, такие как шрифты-офигенные (формат SVG).

Вы говорите, что исходный цвет черный, поэтому здесь у нас есть несколько случаев:

  1. в XML
  2. отсутствует атрибут заливки и обводки * атрибут заливки и обводки может иметь значения "black" или "currentValue"

В приведенном ниже сценарии учитываются два случая:

#/bin/sh
COLOR=yellow
sed -i -E 's/fill\="[^"]+"//g; s/stroke\="[^"]+"//g' *.svg
sed -i "s/<path/<path fill=\"$COLOR\" stroke=\"$COLOR\"/g" *.svg

вы просто задаете целевой цвет в переменной COLOR и не забудьте запустить сценарий внутри вашей папки.

Я протестировал скрипт для потрясающих шрифтов SVG-значков, и он работает.

Дайте мне знать, работает ли он для вас.

РЕДАКТИРОВАТЬ: Для ионы (наброски), попробуйте сценарий ниже:

#/bin/sh
COLOR=yellow
sed -i -E 's/fill\="[^"]+"//g; s/stroke\="[^"]+"//g' *.svg
sed -i "s/<path/<path fill=\"$COLOR\" stroke=\"$COLOR\"/g" *.svg
sed -i "s/<rect/<rect fill=\"$COLOR\" stroke=\"$COLOR\"/g" *.svg
sed -i "s/<polygon/<polygon fill=\"$COLOR\" stroke=\"$COLOR\"/g" *.svg
sed -i "s/<circle/<circle fill=\"$COLOR\" stroke=\"$COLOR\"/g" *.svg
sed -i "s/<ellipse/<ellipse fill=\"$COLOR\" stroke=\"$COLOR\"/g" *.svg
sed -i "s/<polyline/<polyline fill=\"$COLOR\" stroke=\"$COLOR\"/g" *.svg
sed -i -E "s/stroke\:[^\;]+/stroke\:$COLOR/g" *.svg
sed -i -E "s/fill\:\#[0-9]+/fill\:$COLOR/g" *.svg
...