내림차순이 아닌 역순으로 파일 목록을 정렬하려면 어떻게 해야 합니까? sort -r은 내가 원하는 것을 수행하지 않습니다

내림차순이 아닌 역순으로 파일 목록을 정렬하려면 어떻게 해야 합니까? sort -r은 내가 원하는 것을 수행하지 않습니다

다음 명령이 있습니다

cat filename 

산출:

0040
0042
0048
0043

이렇게 하면 cat filename | sort -r출력은 다음과 같습니다.

0048
0043
0042
0040

나는 그것을 원하지 않습니다. 역순이 아닌 내림차순으로 정렬되는 것처럼 보입니다.

나는 다음과 같은 출력을 원합니다 (실제로 역순)

0043
0048
0042
0040

어떻게 해야 하나요?

답변1

파일을 되돌리려면 다음을 사용하십시오.tac:

tac filename

sort -r역순으로 정렬되지 않기 때문에 원하는 대로 수행되지 않습니다. 따라서 숫자가 내림차순으로 표시됩니다. 기본 정렬은 사전 순서이므로 여기서는 숫자로 생각하면 안 됩니다. ).

답변2

당신은 정말로 사용해야합니다tac, 하지만 당신은할 수 있다sort -r각 행에 고유한 번호 접두어를 추가하고 숫자로 정렬하는 경우 이 작업을 수행하는 데 사용됩니다 . 그 후에는 줄 번호를 다시 잘라야 합니다.

cat filename | nl | sort -n -r | cut -f 2-

이는 모든 입력에 대해 작동하지 않습니다. nl빈 줄은 건너뛰고 문자열만 포함하는 줄로 구분된 "섹션"도 검색됩니다 \:. -ba빈 줄을 처리하려면 ,를 사용해야 하고 -d XZ, 한 줄에 단독으로 나타나지 않는 2문자 시퀀스로 섹션 구분 기호를 변경하려면 를 사용해야 합니다 .

답변3

나는 검색 중 작동하는 두 가지 답변을 찾았습니다. 하나는 tac마지막에 사용되었고 다른 하나는 awk내가 이해하지 못하는 진술이었습니다!

답변 1:cat filename | tac

답변 2:cat filename | awk '{arr[i++]=$0} END {while (i>0) print arr[--i] }'

sort -r왜 작동하지 않는지 궁금합니다 ! ...

관련 정보