일부 텍스트 입력에서 특정 줄의 발생 횟수를 계산하는 데 일반적으로 사용하는 관용구는 다음과 같습니다.
… | sort | uniq -c | sort -n
마지막 항목은 sort -n
선택적으로 발생 횟수를 기준으로 행을 정렬하는 데 사용됩니다. 그런데 최근 데이터의 처음 세 행이 헤더이고 이를 정렬하고 계산할 때 포함하면 가독성이 크게 떨어지는 상황에 직면했습니다.
입력의 처음 세 줄만 정렬하지 않고(count 필드를 설명하기 위해) 들여쓰기하는 가장 우아한 방법은 무엇입니까?
답변1
이 질문을 작성하는 시점에서 가장 좋은 해결책은 다음과 같습니다.
… | { for i in 1 2 3; do read -r i; printf ' %s\n' "$i"; done;
sort | uniq -c | sort -n; }
uniq -c
따라서 출력은 세 줄을 읽고 8개의 공백으로 들여쓰기하여 인쇄하는 그룹으로 파이프됩니다(줄과 구분 기호의 수를 유지하는 데 사용되는 공간의 양을 나타냄). 그런 다음 나머지 입력을 그룹 To sort
및 에 전달합니다 uniq
.
위의 내용을 쉘 스크립트로 작성할 수 있을 것 같습니다. 행 번호를 매개변수로 전달하면 이와 같이 사용할 때마다 다시 입력할 필요가 없습니다.