Сортировка файлов CSS по свойству цвета

Следующий сценарий может уведомлять об успехе или неудаче. Вы могли бы легко реализовать mail_notification или другое?

Возможно, вам стоит взглянуть на концепцию Непрерывной интеграции для более надежного решения.

#!/usr/bin/env bash

echo_notification() {
  echo "$(date +%Y%m%d:%H:%m:%S) : compilation failed"
}

no_notification() {
  true
}

for run in {1..100} ; do
  make && no_notification || echo_notification 
done

Если вы хотите получать уведомление только при первом сбое, вы можете использовать set -e в bash для выхода в случае сбоя в сценарии оболочки.

2
19.02.2017, 15:39
2 ответа

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

column  -s "#" -o "#" -t css.txt | sort -r -k2

Это сначала будет столбцом вашего вывода и обратным сортировкой ваших строк на второй столбец.

Возможно, недостатком является то, что он немного изменяет ваш код (но не в плохом смысле) и определенно нуждается в шестнадцатеричной форме цветов. С обозначением типа «цвет: синий» это не сработает.

2
27.01.2020, 22:10

С помощью этого ввода вы можете просто указать sort начать сортировку строки с символа # . Сообщите ему, что у вас есть # -delimited полей, и вы хотите использовать второе в качестве ключа сортировки (или, что эквивалентно, учитывая, что в каждой строке есть только один # , который вы хотите использовать все поля, начинающиеся со второго в качестве ключа сортировки).

sort -t '#' -k 2

Если несколько свойств имеют один и тот же цвет, добавьте параметр -s , чтобы сохранить исходный порядок между свойствами с одинаковым цветом. В качестве альтернативы, передайте -k 1,1 после -k 2 , чтобы использовать имя свойства в качестве вторичного ключа сортировки (обратите внимание, что любой отступ также включен в этот вторичный ключ сортировки).

Этого должно быть достаточно для вашего случая использования. Если ваш реальный вариант использования более сложен, вам может потребоваться массировать ввод перед его сортировкой. Чтобы использовать sort для сортировки данных, в которых ключ сортировки не может быть напрямую идентифицирован в данных, общая идея состоит в том, чтобы использовать инструменты преобразования строк, такие как sed или awk, чтобы сделать копию ключа сортировки в начале строку, затем отсортируйте и, наконец, удалите скопированный ключ сортировки. Вот метод, примененный к этому варианту использования в качестве иллюстрации, с дополнительным шагом преобразования названий цветов в шестнадцатеричные значения в скопированном ключе сортировки (оригинал не изменяется).

sed 's/^.*color: *\([^;]*\);/\1;&/' |
sed 's/^black;/#000000;/; s/^red;/#ff0000;/; #etc.' |
sort |
sed 's/^[^;]*;//'
0
27.01.2020, 22:10

Теги

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