Linux : GNU 정렬은 SEQ를 정렬하지 않습니다
문제
제목이 요약합니다.
$ echo `seq 0 10` `seq 5 15` | sort -n
0 1 2 3 4 5 6 7 8 9 10 5 6 7 8 9 10 11 12 13 14 15
왜 이것이 효과가 없습니까?
내가 사용하지 않더라도 seq
:
echo '0 1 2 3 4 5 6 7 8 9 10 5 6 7 8 9 10 11 12 13 14 15' | sort -n
0 1 2 3 4 5 6 7 8 9 10 5 6 7 8 9 10 11 12 13 14 15
그리고 심지어 도랑 echo
곧장:
$ echo '0 1 2 3 4 5 6 7 8 9 10 5 6 7 8 9 10 11 12 13 14 15' > numbers
$ sort -n numbers
0 1 2 3 4 5 6 7 8 9 10 5 6 7 8 9 10 11 12 13 14 15
해결책
sort(1)
정렬 윤곽. Shitespace 구분 데이터를 직접 구문 분석해야합니다.
echo `seq 0 10` `seq 5 15` | tr " " "\n" | sort -n
다른 팁
신축이 필요하기 때문입니다 sort
:
$ echo `seq 0 10` `seq 5 15` | tr " " "\\n" | sort -n | tr "\\n" " "; echo ""
0 1 2 3 4 5 5 6 6 7 7 8 8 9 9 10 10 11 12 13 14 15
$
하나의 입력 라인이 있습니다. 분류 할 것이 없습니다.
입력 한 명령은 모두 전달되는 숫자 순서가 발생합니다. sort
한 줄로. 그것은 당신이 원하는 것이 아닙니다. 그냥 출력을 전달하십시오 seq
직접 sort
:
(seq 0 10; seq 5 15) | sort -n
그건 그렇고, 당신이 방금 발견했듯이, 구조는
echo `command`
그렇지 않습니다 대개 당신이 기대하는 것을하고 실제로 기대하는 것에 대해 중복됩니다. 그것은 쉘에 출력을 캡처하도록 지시합니다. command
그리고 그것을 전달하십시오 echo
, 다시 출력으로 생성합니다. 명령의 출력이 직접 통과하도록하십시오 ( 진짜 그것을 처리하는 것을 의미합니다 echo
, 아마도 탈출 시퀀스를 확장하거나 모든 것을 한 줄로 무너 뜨릴 수도 있습니다).
제휴하지 않습니다 StackOverflow