группировка скрытых файлов и каталогов с LS

Использование 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 (OSX)

Если вы работаете в системе BSD, нам нужно немного изменить команду sed:

while IFS=",$IFS" read id color
do
    sed -i "" "s/g id=\"${id,,}\"/& style=\"fill:$color;\"/g" file.svg
done <file.csv
0
13.01.2018, 15:21
0 ответов

Теги

Похожие вопросы