
다음 명령이 있습니다
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
왜 작동하지 않는지 궁금합니다 ! ...