Classifique os arquivos css pela propriedade color

3

Eu gostaria de criar um script que classifique o arquivo CSS por cores. Por exemplo:

.actions_menu_forgot_password_link:hover {color: #deca9b;}
.login_popup_forgot_password_link {color: #ddeffb;}
.login_popup_forgot_password_link:hover {color: #deca9b;}
.trading_data_allTrades_button {color: #ddeffb; }

Resultado esperado:

.actions_menu_forgot_password_link:hover {color: #deca9b;}
.login_popup_forgot_password_link:hover {color: #deca9b;}
.login_popup_forgot_password_link {color: #ddeffb;}
.trading_data_allTrades_button {color: #ddeffb; }
    
por Hananc86 19.02.2017 / 13:56

2 respostas

2

Uma possibilidade pode ser que você escreva um script de shell assim:

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

Isso primeiro colunizará sua saída e ordenará suas linhas na segunda coluna.

Talvez uma desvantagem seja que ele modifique seu código um pouco (mas não de uma forma ruim) e definitivamente precisa da forma hexagonal das cores. Com uma notação como "cor: azul", não funciona.

    
por 19.02.2017 / 14:37
0

Com essa entrada, você pode simplesmente ordenar para começar a classificar a linha no caractere # . Diga-lhe que você tem # -delimited campos e você deseja usar o segundo como a chave de classificação (ou equivalentemente dado que há apenas um # por linha, que você deseja usar todos os campos começando com o segundo a chave de classificação).

sort -t '#' -k 2

Se várias propriedades tiverem a mesma cor, adicione a opção -s para preservar a ordem original entre as propriedades com a mesma cor. Alternativamente, passe -k 1,1 após -k 2 para usar o nome da propriedade como a chave de classificação secundária (note que qualquer indentação também está incluída nesta chave de classificação secundária).

Isso deve ser bom o suficiente para o seu caso de uso. Se o seu caso de uso real for mais complexo, talvez seja necessário massagear a entrada antes de classificá-la. Para usar sort para classificar dados em que a chave de classificação não é diretamente identificável nos dados, a idéia geral é usar ferramentas de transformação de linha como sed ou awk para fazer uma cópia da chave de ordenação no início da linha. classificar e, finalmente, retirar a chave de classificação copiada. Aqui está a técnica aplicada a este caso de uso como ilustração, com uma etapa extra de converter nomes de cores em valores hexadecimais na chave de classificação copiada (o original não é alterado).

sed 's/^.*color: *\([^;]*\);/;&/' |
sed 's/^black;/#000000;/; s/^red;/#ff0000;/; #etc.' |
sort |
sed 's/^[^;]*;//'
    
por 19.02.2017 / 23:51