grep 및 sort 명령을 사용하여 어떻게 정렬합니까?


14

파일에있는 모든 TCP 서비스의 정렬 된 목록을 만들고 /etc/services명령의 출력을 명령 grep tcp /etc/services으로 sort파이프 한 다음이 파이프의 출력을 파일로 리디렉션하고 싶습니다 ~/pipelab.txt.

출력이 잘못되었다는 오류 메시지가 계속 표시되며 이유를 모르겠습니다.

이것이 내가 마지막으로 시도한 것입니다.

grep tcp /etc/services > ~/pipelab.txt | sort

답변:


11

> ~/pipelab.txt분명히 파이프 라인 연산자의 같은쪽에있는 명령에 속합니다 |. 즉, grep출력을 파이핑하는 대신 파일로 리디렉션합니다 sort.

grep tcp /etc/services | sort > ~/pipelab.txt

21

출력을 grep파일로 리디렉션 하고로 파이프하려고합니다 sort. 적어도 그렇게는 할 수 없습니다.

대신, 당신은 정말로 그것을 정렬하기 위해 먹이기를 원합니다.

grep tcp /etc/services | sort

그런 다음 정렬 된 출력 (즉, 정렬되지 않은 내용)을 파일로 리디렉션하고 정렬 후 리디렉션을 넣습니다.

grep tcp /etc/services | sort > ~/pipelab.txt

파이프와 방향 전환은 명령의 출력 위치를 변경하여 작동합니다. 그중 두 가지가 출력을 놓고 싸우고 grep(최종적으로 리디렉션이 승리하고 분류되지 않은 출력을 파일에 썼습니다).


대단히 감사합니다. 정렬 명령이 여전히 작동하는 곳이라면 어디에서나 정렬 명령을 넣는 한 생각했습니다.
user72510 2016 년

1
@ user72510 파이프 라인은 왼쪽에서 오른쪽으로 순서대로 처리됩니다. 예를 들어 정렬 된 출력의 처음 다섯 줄을 원할 경우 실제로 유용합니다 grep tcp /etc/services | sort | head -n 5. 이 sort전에 수행해야합니다 head. 그렇지 않으면 원하는 줄을 얻지 못할 수 있습니다.
derobert

설명해 주셔서 감사합니다. 나는 수업을 온라인으로 진행하고 있으므로 나 자신을 가르치고 있습니다. 내가 40 살이라고 덧붙이는 것은 느리게 배우는 것입니다.
user72510 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.