이 명령에서는 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 를 사용하여 이를 요청합니다 .grep
sort
> 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