Linux: выводим в консоль все имеющиеся в css цвета

Сегодня настроение для консольного кунг-фу. Задача — вывести список используемых в css цветов. Часто возникающая задача при работе над оформлением.

Warning! Hardcore content!

grep -ihr color *.css | sed "s/.*color.*:\ *\"\?\([^\"|^\;|^\!]*\)\(.*\)/color:\1;/" | grep ";" > 1.colors
grep -ihr "background[^\-]" *.css | sed "s/.*background.*:\ *\"\?\([^\"|^\;|^\!|\S]*\)\(.*\)/color:\1;/" | grep ";" >> 1.colors
grep -ihr "border[^\-]" *.css | sed "s/.*border.*:\ *\"\?\([^\"|^\;|^\!|\S]*\)\(.*\)/color:\1;/" | grep ";" >> 1.colors
grep -v url 1.colors > 2.colors
grep -v "\/\*" 2.colors > 3.colors
sort 3.colors | uniq > 4.colors
more 4.colors


Под конец желательно сделать:

cat 4.colors | grep '#' > 5.colors


Найдено здесь

Комментарии (9)

RSS свернуть / развернуть
+
0
Хорошая задачка, можно будет задействовать при преподавании программирования. Кстати, завтра в учебном центре «Шифа» пройдет первое занятие курса «Программирование на языках C, C++, Java».
avatar

yababay

  • 08 сентября 2011, 16:03
+
0
Молодцы! Группу набрали большую?
avatar

Sergei_T

  • 09 сентября 2011, 10:44
+
0
Маленькую, 4 человека. Но, кажется, кто-то еще хотел записаться. За следующую неделю еще можно доукомплектовать. Если пропустят первые 2-3 занятия — не критично.

Была мысль порекламировать это дело на Мтааламу, но, думаю, первая группа (как бы пробная) пусть будет поменьше. На ней обкатаю методологию преподавания и следующую можно будет уже побольше взять. Например, через пару недель второй поток запустить.
avatar

yababay

  • 09 сентября 2011, 10:54
+
0
Лады, рекламу разместим — не проблема
avatar

Sergei_T

  • 09 сентября 2011, 11:04
комментарий был удален

+
0
А вот так чем плохо?

ls -1 *.css | while read $f ; do (cat $f | egrep -o -e '#[0-9A-Ea-e]{6}' | uniq >> allColors.txt) ; done


Правда, иногда цвета кодируются тремя, а не шестью 16-ричными знаками (#FFF, #006), так что регулярное выражение нужно чутка усложнить. Но шесть строк для такой задачи — имхо перебор.
avatar

yababay

  • 09 сентября 2011, 22:25
+
0
В виде скрипта накидал:

#!/bin/sh

grep -ihr color $1 | sed "s/.*color.*:\ *\"\?\([^\"|^\;|^\!]*\)\(.*\)/color:\1;/" | grep ";" > 1.colors
grep -ihr "background[^\-]" $1 | sed "s/.*background.*:\ *\"\?\([^\"|^\;|^\!|\S]*\)\(.*\)/color:\1;/" | grep ";" >> 1.colors
grep -ihr "border[^\-]" $1 | sed "s/.*border.*:\ *\"\?\([^\"|^\;|^\!|\S]*\)\(.*\)/color:\1;/" | grep ";" >> 1.colors
grep -v url 1.colors > 2.colors
grep -v "\/\*" 2.colors > 3.colors
sort 3.colors | uniq | grep '#' > $1.colors

rm 1.colors 2.colors 3.colors


Вызываем: ./clean.sh style.css, цвета сохраняет в style.css.colors
avatar

Sergei_T

  • 13 сентября 2011, 18:55
+
0
Понял, в чем недостаток моего решения: цвета могут быть заданы не только в hex-кодировке, но и словами (white, black...).
avatar

yababay

  • 13 сентября 2011, 22:16
+
0
ну кстати в этом скрипте еще сохраняет описание оформления, например, dotted, solid и прочее
avatar

Sergei_T

  • 14 сентября 2011, 09:34

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.