CSS 파일을 색상별로 정렬하는 스크립트를 만들고 싶습니다. 예를 들어:
.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; }
예상되는 결과:
.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; }
답변1
다음과 같은 쉘 스크립트를 작성할 수 있습니다.
column -s "#" -o "#" -t css.txt | sort -r -k2
그러면 출력이 먼저 열화되고 두 번째 열의 행이 역 정렬됩니다.
아마도 단점은 코드가 약간 수정되지만(너무 나쁘지는 않음) 반드시 16진수 형식의 색상이 필요하다는 것입니다. "color: blue"와 같은 기호를 사용하면 작동하지 않습니다.
답변2
이 입력을 사용하면 sort 에서 문자로 시작하는 줄을 정렬하도록 지시하기만 하면 됩니다 #
. #
구분된 필드가 있고 두 번째 필드를 정렬 키로 사용하고 싶다고 말합니다 (또는 동등하게 행당 하나의 필드만 있다고 가정하면 #
두 번째 필드로 시작하는 모든 필드를 정렬 키로 사용하려고 함). .
sort -t '#' -k 2
여러 속성의 색상이 동일한 경우 -s
동일한 색상의 속성 간 원래 순서를 유지하는 옵션을 추가하세요. 또는-k 1,1
뒤쪽에 -k 2
속성 이름을 보조 정렬 키로 사용합니다(모든 들여쓰기도 이 보조 정렬 키에 포함됩니다).
이는 귀하의 사용 사례에 충분합니다. 실제 사용 사례가 더 복잡한 경우 입력을 정렬하기 전에 처리해야 할 수도 있습니다. 정렬 키를 직접 식별할 수 없는 데이터를 정렬하는 데 사용하려면 sort
일반적인 아이디어는 행 변환 도구(예: sed 또는 awk)를 사용하여 행 시작 부분에 정렬 키를 복사한 다음 정렬하고 그런 다음 마지막으로 복사된 정렬 키를 제거합니다. 예를 들어, 복사된 정렬 키에서 색상 이름을 16진수 값으로 변환하는 추가 단계를 포함하는 이 사용 사례에 적용되는 기술은 다음과 같습니다(원래 값은 변경되지 않음).
sed 's/^.*color: *\([^;]*\);/\1;&/' |
sed 's/^black;/#000000;/; s/^red;/#ff0000;/; #etc.' |
sort |
sed 's/^[^;]*;//'