본문 바로가기
IT지식/개발

[Linux] grep으로 검색한 문자열에서 특정 문자 추출. uniq 중복 제거 안될 때. (cut uniq sort )

by 7$ 2020. 2. 14.

 

index.html 이라는 파일의 내용을 보자.

cat index.html

 

엄청 길다. 여기서 "color"가 포함된 문자열을 출력해보자. 

cat index.html | grep "color"

2020/02/14 - [개발] - [Linux] 원하는 디렉토리/파일/문자열 데이터를 추출해보자. (find | xargs grep)

 

[Linux] 원하는 디렉토리/파일/문자열 데이터를 추출해보자. (find | xargs grep)

access.log 파일 안에, 특정 문자열 데이터를 추출 할 것입니다. 우선 파일을 찾아봅시다. find find는 리눅스에서 파일 및 디렉토리를 검색할 때 사용하는 명령입니다. 현재 위치에서 access.log를 파일의 이름..

sevendollars.tistory.com

color가 포함된 문자열이 출력됐다. cut 명령어의 구분자를 이용해 Color HEX를 추출해보자.

cut

cut 은 문자열을 각 필드로 구분하고 필드별로 내용을 추출 할 수 있다. 구분자로 문자열을 나눠보자.

grep으로 추출한 문자열의 패턴을 잘 살펴보자. Color HEX만 추출하려면, 어떤 문자를 구분자로 사용해야 할까.

구분자로 설정하는 옵션은 -d 이고, 구분자로 필드를 나누면 몇번째 필드를 출력할 것인지 명령해야 한다.

 

: 를 사용해보자. 구분자는 : 을 사용할 것이고 두번째 필드를 출력할 것이다.

cat index.html | grep "color" | cut -d ":" -f2

color HEX 만 추출했다. 이제 중복을 제거해보자. 중복제거는 uniq를 사용하겠다.

cat index.html | grep "color" | cut -d ":" -f2 |  uniq

 

어? 이상하다. 왜 중복 제거가 안 됐지? 카운트를 해보자.

cat index.html | grep "color" | cut -d ":" -f2 |  uniq -c

카운트가 증가한 행을 중복 제거 전의 것과 비고해서 살펴보면 위 아래 근접한 것만 중복제거 처리 되었다.

그렇다면 sort를 해보자.

sort

sort는 입력어들이나 인수목록들에 기입된 모든 파일들의 연속어들을 정렬된 순서로 출력한다.

cat index.html | grep "color" | cut -d ":" -f2 | sort

 

정렬이 되었다. 그럼 이제 다시 uniq를 붙여보자.

cat index.html | grep "color" | cut -d ":" -f2 | sort | uniq -c

출력 완료. 

 

uniq는 중복된 내용의 행이 연속으로 있으면 중복 없이 하나의 행으로 만들어 주기 때문에 흔히 sort와 함께 사용한다.

새로운 사실을 알게되었다. 

 

다음 시간에는 awk를 알아보자