Linux - 제목을 유지하면서 정렬

Linux - 제목을 유지하면서 정렬

상단 헤더를 유지하면서 데이터를 정렬하는 방법에 대해 많은 질문이 제기되었습니다. 내가 본 답변은 그다지 일반적이지 않은 것 같습니다. 파일 기반 및 스트림 기반 정렬을 지원할 만큼 유연하지 않으며 정렬 옵션을 허용하지 않습니다.

아, 이걸 어떻게 요약하나요?

답변1

이는 표준 입력으로 제공된 모든 것을 정렬합니다.

perl -e 'print scalar <>, sort <>;'

예:

# echo -e "Heading\n2\n1"|perl -e 'print scalar <>, sort <>;'
Heading
1
2

파일을 정렬하려면 다음을 입력하십시오.

echo -e "Heading\n2\n1" >/tmp/test
</tmp/test perl -e 'print scalar <>, sort <>;'

주의해야 할 유일한 것은 파일을 제자리에 정렬하는 것입니다.

답변2

이 문제를 해결하는 작은 스크립트는 다음과 같습니다.

#!/bin/bash

ARGS=()

while (( $# > 0 )) ; do
    [[ -f "$1" ]] && break
    ARGS+=( "$1" )
    shift
done

awk -v SORT_ARGS="${ARGS[*]}" '
    ( NR == 1 ) {
        print
        next
    }
    {
        print | "sort " SORT_ARGS
    }
' $@

정렬 매개변수가 실제로 파일인 경우에는 약간 복잡해지며 이 논리가 강화될 수 있습니다. 전반적으로 그것은 나에게 잘 작동합니다 ..

관련 정보