sort -u가 파이프라인에서 중복 항목만 제거하는 이유는 무엇입니까?

sort -u가 파이프라인에서 중복 항목만 제거하는 이유는 무엇입니까?

이 명령에서는 sort -u중복 항목이 제거됩니다.

curl https://en.wikipedia.org/wiki/Help:Special_page -s | grep -oP 'Special:\K[a-zA-Z0-9]*' | sort -u > special_page_names

이 명령에서는 그렇지 않습니다.

curl https://en.wikipedia.org/wiki/Help:Special_page -s | grep -oP 'Special:\K[a-zA-Z0-9]*' > special_page_names
sort -u special_page_names

sort -u가 파이프라인에서 중복 항목만 제거하는 이유는 무엇입니까?
즉, 일반 파일에서 실행할 때 중복 항목을 제거하지 않는 이유는 무엇입니까?

답변1

sort필터입니다. 입력을 읽고, 어떤 방식으로든 데이터를 수정하고, 출력을 인쇄합니다. grep또한 필터.

일반적으로 필터는 표준 입력에서 읽고 표준 출력에 쓰는 방식으로 작동합니다.

… | grep … | sort -u > special_page_names표준 입력이 sort에서 나오고 grep표준 출력이 sort로 가는 경우 special_page_names. |끝에 between 및 and 를 사용하여 이를 요청합니다 .grepsort> special_page_names

이 구문은 sort -u special_page_names도구가 표준 입력(대화형 셸에서는 터미널, 셸에서 상속된 표준 입력)을 무시하고 대신 읽도록 지시합니다 special_page_names. 표준 출력은 리디렉션되지 않습니다. 이는 쉘(일반적으로 터미널)에서 상속된 표준 출력입니다.귀하의 경우 터미널. 데이터는 다음에서 날아옵니다.special_page_names 당신의 터미널로.

sort -u special_page_names출력을 일반 파일에 저장하려는 경우 sort첫 번째 경우처럼 출력을 리디렉션하는 것이 한 가지 방법입니다.special_page_names그래도 다시 리디렉션하지 마세요 .;다른 파일을 선택하세요.

sort -u special_page_names > special_page_names_sorted

일부 도구(예: 텍스트 편집기)는 읽은 파일을 수정할 수 있습니다. 일부 필터에는 읽은 파일을 재정의하는 옵션이 있습니다(예: sed -i). 파일을 옵션 인수 -o및 피연산자 로 지정하여 동일한 파일에 정렬 쓰기를 수행할 수 있습니다 .

sort -u -o special_page_names special_page_names

관련 정보