uniq 명령어중에 -i 옵션 질문드립니다!

19.08.12 20:56 작성 조회수 266

1

안녕하세요 선생님. uniq -i 옵션에 관해 궁금한게 있어서 질문드립니다~ 

1,2,3,4,5 까지만 출력되면 좋겠는데

6,7,8,9,10 은 왜 다시 소문자로 한번더 중복되게 출력된거죠??? ㅇㅅㅇ?   전 대소문자 무시하고 한가지만 출력되는걸로 이해했거든요

원인을 모르겠습니다 OTL ....원래 저렇게 출력되는게 정상인가요??

답변 4

·

답변을 작성해보세요.

3

anstjq1036님의 프로필

anstjq1036

질문자

2019.08.14

헉 그러네요! sort만 해서 했더니 대소문자 구별해서 나열되네요 , 그래서 uniq -i옵션이 대문자 소문자 두번 출력된거였어요.  sort 할때 -f옵션준다음에 uniq -i 하니까 잘 되네요 ㅎㅎ 감사합니다 쌤

그냥 sort로만 출력하면  대소문자를 구별하여 출력된다.

그 상태에서 uniq 옵션을 사용하면, uniq옵션은 연속되어 나열되는 중복된값만을 제외처리하기때문에,

대소문자가 구별되어 출력된 상태에서는 , 같은 이름이어도 연속되어 나열되지 않기때문에 uniq의 기능이

대소문자 따로 분리되어 적용된다.

 

하지만 sort기능에 -f를 붙이면, 대소문자 구별없이 같은이름들이 서로 연속적으로 나열되게 된다.

(-f는 대소문자 구별을 없애는 옵션이고, sort는 자동으로 알파벳순으로 나열시켜주는 명령어)

 

이 상태에서 uniq -i옵션을 쓴다면 연속되어 중복된 이름은 전부 제외처리되고 한개만 출력된다.

(uniq 의 -i 옵션도 sort의 -f옵션과 같은, 대소문자 구별을 하지않게하는 옵션이다. 이 옵션을 사용하면

대소문자 구별없이 연속적으로 중복된 텍스트는 제외처리되고 하나만 출력되게 된다.)

2

아래 질문과 같은 내용의 질문이 아닌가 싶네요.

https://www.inflearn.com/questions/11976

이 질문자께서는 sort -f 옵션(ignore case)으로 저와 같은 결과를 얻으셨네요. 참고해보세요~ :D

2

안녕하세요~

저의 시험 환경이랑 수강자분의 시험 환경이 달라서 결과가 다르게 나오는 것 같습니다. 제 환경에서는 아래와 같이 출력되거든요

progcoach4u@ubuntu-vm:lct$ sort uniq_sample | uniq -i | nl
     1	john
     2	kim
     3	lee
     4	mike
     5	tyler
progcoach4u@ubuntu-vm:lct$ 

 

제 추측으로는 sort 명령의 결과가 다른 것이 원인인 것 같습니다. 먼저 제 결과는 아래와 같습니다.

progcoach4u@ubuntu-vm:lct$ sort uniq_sample 
john
John
JOHN
kim
kim
Kim
Kim
KIM
lee
lee
lee
Lee
mike
mike
Mike
Mike
Mike
Mike
MIKE
tyler
tyler
Tyler
progcoach4u@ubuntu-vm:lct$ 

 

제 환경에서는 sort 명령어가 대소문자 구분없이 정렬했기 때문에 뒤이어 나오는 uniq -i에서 대소문자 무시하고 하나만 출력하도록 하여 총 5개의 아웃풋이 나온 것입니다. 그런데 질문의 실행 결과를 보면 대문자로 먼저 정렬되고, 그 다음에 소문자로 정렬 되네요. sort 명령어가 A-Za-z 순으로 정렬을 한 것 아닌가 싶네요. sort 명령만 수행했을 때의 결과를 비교해보시면 정확한 원인을 분석하실 수 있지 않을까 싶어요. sort 명령만 수행했을 때의 결과를 댓글로 올려주시면 다른 수강자분들도 같이 보실 수 있을 것 같습니다~ :) 

0

화면 캡쳐에 상세한 설명까지!! 비슷한 어려움을 겪으신 분들께 많은 도움이 되었을 것 같아요!! 감사합니다!!!