Использование bash и GNU sed:
while IFS=",$IFS" read id color
do
sed -i "s/g id=\"${id,,}\"/& style=\"fill:$color;\"/g" file.svg
done <file.csv
После этого file.svg будет выглядеть так:
<g id="hi" style="fill:blue;">
<title>Hawaii</title>
<path class="state hi" d="m 233.08751,519.30948 ... z" id="HI" />
</g>
while IFS = ", $ IFS" читать цвет идентификатора; do
Это запускает цикл while
, читая переменные id
и color
. Мы добавляем запятую к IFS
, чтобы ввод был разделен на запятые и пробелы.
sed -i "s / g id = \" $ {id ,,} \ "/ & style = \" fill: $ color; \ "/ g" file.svg
Это выполняется на месте обновление file.svg. Здесь используется bash для преобразования id
в нижний регистр: $ {id ,,}
. Он ищет строку g id = "$ {id ,,}"
и заменяет ее на g id = "$ {id ,,} style =" fill: $ color; "
.
Примечание. $ id
и $ color
подставляются непосредственно в команду sed. Это следует делать , только если вы доверяете источнику file.csv файл.
done
Это завершает цикл while
и дает ему команду читать из file.csv
.
Если вы работаете в системе BSD, нам нужно немного изменить команду sed:
while IFS=",$IFS" read id color
do
sed -i "" "s/g id=\"${id,,}\"/& style=\"fill:$color;\"/g" file.svg
done <file.csv