Обрезать десятичные разряды из чисел в текстовом редакторе

Steve Brooker спросил: 14 ноября 2017 в 06:28 в: svg

У меня есть набор определений SVG, экспортированных из Inkspace, и, как любой, кто сделал это самостоятельно, узнает, что полученное определение часто содержит гораздо большую точность, которая на самом деле оправдана. Например, для определения значка 32 x 32, показанного ниже, Inkspace сгенерировало 6 (или более!) Десятичных знаков точности на пиксель. Теперь я знаю, что это означает, что он будет масштабироваться, но в моем случае я бы предпочел сэкономить место в моем приложении, которое требует ввода сотен таких определений значков.

<svg width="32" height="32"><path d="M 14.576172 5.453125 L 13.78125 8.8222656 L 12.464844 9.3691406 L 9.5625 7.5898438 L 7.5898438 9.5351562 L 9.3691406 12.576172 L 8.8222656 13.78125 L 5.4785156 14.630859 L 5.4785156 17.369141 L 8.8496094 18.246094 L 9.3691406 19.507812 L 7.5625 22.464844 L 9.5351562 24.410156 L 12.548828 22.658203 L 13.808594 23.177734 L 14.603516 26.494141 L 17.396484 26.521484 L 18.191406 23.177734 L 19.505859 22.658203 L 22.410156 24.410156 L 24.355469 22.410156 L 22.658203 19.451172 L 23.150391 18.191406 L 26.492188 17.369141 L 26.492188 14.630859 L 23.123047 13.726562 L 22.630859 12.521484 L 24.410156 9.5351562 L 22.410156 7.5898438 L 19.451172 9.3417969 L 18.246094 8.8222656 L 17.396484 5.453125 L 14.576172 5.453125 z M 15.984375 12.082031 A 3.9078221 3.9078221 0 0 1 19.892578 15.988281 A 3.9078221 3.9078221 0 0 1 15.984375 19.896484 A 3.9078221 3.9078221 0 0 1 12.078125 15.988281 A 3.9078221 3.9078221 0 0 1 15.984375 12.082031 Z" fill="#f9f9f9" /></svg>

Поэтому мой вопрос заключается в том, как можно Я обрезал определения, используя текстовый редактор, чтобы сказать 2 десятичных знака.

Я обнаружил, что с помощью TextWrangler с помощью следующего поиска grep и замены строки

(\.[0-9][0-9])([0-9][0-9][0-9][0-9][0-9][0-9])
\1

что я могу найти все строки из 6 десятичных знаков и заменить их на 2 десятичных знака. Затем я могу изменить поиск и заменить на

(\.[0-9][0-9])([0-9][0-9][0-9][0-9][0-9])
\1

, а затем на

(\.[0-9][0-9])([0-9][0-9][0-9][0-9])
\1

и, наконец, на

(\.[0-9][0-9])([0-9][0-9][0-9])
\1

и это работает.

Однако, если кто-то с немного (или много) большим количеством пикселей мозга, чем я, мог бы показать мне, как сделать все вышеперечисленное с помощью одного поиска и замены. операция, я был бы очень счастлив.

0 ответов