본문 바로가기
LinuX

[리눅스] 검색 및 출력 (find, grep, egrep, awk, cut, sed, sort, uniq, wc)

by 타마마임팩트_쫀 2015. 8. 4.

출처 : http://blog.naver.com/fineformula/60179909237


1. find

 

파일 또는 디렉토리 검색

예) 현재경로에서 httpd.conf 파일 찾기, 하위경로 포함

 

 # find ./ -name httpd.conf

 

 

 

예) 최근수정일 15일이 지나고 /home/backup 바로 아래있는 디렉토리 삭제하는 명령

 

 # find /home/backup/ -maxdepth 1 -type d -mtime +15 -exec /bin/rm -rf {} \;

 

 

 

 

2. grep

 

원하는 패턴과 일치하는 줄 출력

예) 80번 포트가 물려 있는 세션 모두 출력

 

 # netstat -ant | grep :80

 

 

 

grep 옵션 중 자주 쓰는 옵션

 

   v  :  패턴 제외한 부분을 출력 (역으로 출력)
   i  :  대소문자 무시
   r  :  하위디렉토리 포함

 

 

 

3. egrep

 

grep 과 같은 역할, 원하는 패턴이 두개 이상일 때 사용

예) 80번 포트가 물려 있는 세션 중 LISTEN 과 TIME_WAIT 가 있는 줄은 제외하고 출력

 

 # netstat -ant | grep :80 | egrep -v "LISTEN|TIME_WAIT"

 

 

 

 

4. awk

 

특정 패턴 기준 n 번째 내용 출력, 옵션 안쓰면 공백을 경계로 사용

예) 위의 결과에서 왼쪽에서 5번째 내용만 출력, 빈칸을 경계로..

 

 # netstat -ant | grep :80 | egrep -v "LISTEN|TIME_WAIT" | awk '{print $5}'

 

 

 

 

5. cut

 

awk 와 유사한 역할, 경계의 기준 문자를 설정하고 n 번째 내용 출력

예) 위의 결과에서 : 문자를 경계로 첫번째 내용 출력

 

 # netstat -ant | grep :80 | egrep -v "LISTEN|TIME_WAIT" | awk '{print $5}' | cut -d : -f 1

 

 

 

 

6. sed

 

특정 패턴을 바꾸거나, 맨 앞이나 맨 뒤에 원하는 패턴 추가, ^ 은 맨 앞을 뜻하고 $ 는 맨 뒤를 뜻한다.

예) 위의 결과물에서 맨 앞에 IP : 패턴을 추가

 

 # netstat -ant | grep :80 | egrep -v "LISTEN|TIME_WAIT" | awk '{print $5}' | cut -d : -f 1 | sed 's/^/IP : /g'

 

 

 

 

7. sort, uniq

 

정렬과 중복 제거, 패턴 검색과 같이 쓰면 효과적

예) 위의 결과물에서 순서대로 정렬하고 중복되면 제거

 

 # netstat -ant | grep :80 | egrep -v "LISTEN|TIME_WAIT" | awk '{print $5}' | cut -d : -f 1 | sed 's/^/IP : /g' | sort | uniq

 

 

 

 

8. wc -l

 

출력된 내용의 라인 수를 출력

예) 위 결과물의 라인 수 구하기

 

 # netstat -ant | grep :80 | egrep -v "LISTEN|TIME_WAIT" | awk '{print $5}' | cut -d : -f 1 | sed 's/^/IP : /g' | sort | uniq | wc -l

 

 

 

 

위에서 산출한 결과물은 현재 웹서버에 접속한 클라이언트 IP 수치다.

TIME_WAIT 세션까지 접속자에 포함 시키고 싶다면 해당 부분을 수정해주면 된다.

이처럼 패턴 검색 명령들을 잘 활용하면 다양한 결과들을 산출 할 수 있다.



합계 구하기

[oracle@mlcp02 tmp]$ ls -al 0805*

-rw-r--r-- 1 oracle oracle 1708 2015-08-05 12:07 0805_01

-rw-r--r-- 1 oracle oracle 5907 2015-08-05 15:53 0805_02

-rw-r--r-- 1 oracle oracle 5523 2015-08-05 16:09 0805_03

-rw-r--r-- 1 oracle oracle  238 2015-08-05 15:48 0805_04


[oracle@mlcp02 tmp]$ ls -al 0805* | awk '{sum += $5} END {print sum}'

13376



'LinuX' 카테고리의 다른 글

linux 프로세스 별 cpu 사용률  (0) 2016.05.10
sed 사용법  (0) 2015.08.24
[Linux] sar 명령어를 통한 시스템 모니터링  (0) 2015.02.12
split 명령어  (0) 2014.10.13
고급 Linux 커맨드 마스터 가이드, 제 2 부  (0) 2009.06.23