키로 색인된 항목이 포함된 파일이 있습니다.
\newglossaryentry{[alpha key]}
{
[some lines with arbitrary content]
}
두 항목은 하나 이상의 줄로 구분될 수 있습니다. 키를 기준으로 이러한 항목을 어떻게 정렬할 수 있나요? 부가적인 질문은 이 패턴의 정규 표현식이 무엇입니까?입니다.
감사해요.
답변1
perl -0ne 'print join "\\", sort split(/^\\/m)' input.txt
이는 다음을 기반으로 합니다.라인 그룹별로 파일 정렬@αГsнιι로 연결된 답변입니다.
정규식을 구분 기호로 사용하여 전체 입력 파일을 배열로 분할합니다 ^\
. 그런 다음 배열 요소가 \
단일 문자로 연결된 정렬된 배열을 인쇄합니다.
\
분할 작업 중에 제거된 문자를 다시 넣기 때문에 연결이 필요합니다 .
참고: 이 스크립트는 용어집에서 정의하는 내용에 전혀 관심을 두지 않습니다. 그것이 하는 일은 입력을 로 시작하는 줄을 기반으로 배열로 분할하는 것뿐입니다 \
.
이는 입력 라인이 있는 경우를 의미합니다.앞으로첫 번째 \newglossary
항목은 정렬된 순서로 인쇄됩니다(배열 요소 0이 됨). 그러한 줄이 없으면 배열 요소 0은 비어 있고 먼저 인쇄되지만(빈 문자열이 다른 모든 것보다 먼저 정렬되기 때문에) 눈에 보이는 출력은 생성되지 않습니다(비어 있기 때문입니다).
텍스트 줄이 있는 경우뒤쪽에마지막 \newglossary
항목은 항목이 어디에 정렬되어 있든 상관없이 스크립트에서 인쇄된다고 생각하기 때문에 인쇄됩니다.이 항목의 일부.
두 항목 사이에 임의의 텍스트가 있는 경우에도 동일한 일이 발생합니다. 해당 줄은 두 항목 중 첫 번째 항목의 일부가 됩니다.