상단 헤더를 유지하면서 데이터를 정렬하는 방법에 대해 많은 질문이 제기되었습니다. 내가 본 답변은 그다지 일반적이지 않은 것 같습니다. 파일 기반 및 스트림 기반 정렬을 지원할 만큼 유연하지 않으며 정렬 옵션을 허용하지 않습니다.
아, 이걸 어떻게 요약하나요?
답변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
}
' $@
정렬 매개변수가 실제로 파일인 경우에는 약간 복잡해지며 이 논리가 강화될 수 있습니다. 전반적으로 그것은 나에게 잘 작동합니다 ..