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/^[^;]*;//'