![최상위 패턴을 제외하고 sed에서 일치하는 모든 패턴을 제거하는 방법은 무엇입니까? [복사]](https://linux55.com/image/159865/%EC%B5%9C%EC%83%81%EC%9C%84%20%ED%8C%A8%ED%84%B4%EC%9D%84%20%EC%A0%9C%EC%99%B8%ED%95%98%EA%B3%A0%20sed%EC%97%90%EC%84%9C%20%EC%9D%BC%EC%B9%98%ED%95%98%EB%8A%94%20%EB%AA%A8%EB%93%A0%20%ED%8C%A8%ED%84%B4%EC%9D%84%20%EC%A0%9C%EA%B1%B0%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
파일.txt
1.1.1.1 abc
1.1.1.1 ccc
1.2.2.2 ddd
1.2.2.2 qqq
1.2.2.2 zzz
예상되는 결과:
1.1.1.1 abc
1.2.2.2 ddd
나는 시도했다:
sed -i '/1.1.1.1/d' file.txt
sed -i '/2.2.2.2/d' file.txt
하지만 1개의 결과를 남기지 않고 모든 결과를 삭제합니다. 일치하는 패턴을 모두 제거하고 1을 남겨 두는 방법은 무엇입니까?
답변1
sort
이 옵션을 사용하여 --unique
원하는 것을 얻을 수 있습니다.
$ sort --unique --key=1,1 file.txt
1.1.1.1 abc
1.2.2.2 ddd
아니면 간단히 말해서
sort -uk1,1 file.txt
이 --unique
옵션은 동일한 필드가 있는 처리된 행을 억제하고
--key=1,1
첫 번째 필드를 정렬 키(시작그리고끝 위치).