문제

제목이 요약합니다.

$ 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, 아마도 탈출 시퀀스를 확장하거나 모든 것을 한 줄로 무너 뜨릴 수도 있습니다).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top