grep, sed, awk 명령어

2025. 3. 2. 13:00Linux*security/시스템운영

반응형

 

이 세 가지 명령어는 텍스트를 검색, 변환, 처리하는 데 자주 사용된다.


1. grep (Global Regular Expression Print)

grep은 파일 또는 표준 입력에서 특정 문자열이나 패턴을 검색하는 명령어이다.

기본 사용법

grep "검색어" 파일명

예제

grep "error" logfile.txt

→ logfile.txt에서 "error"가 포함된 모든 줄을 출력

주요 옵션

  • -i : 대소문자 구분 없이 검색
  • -v : 패턴에 일치하지 않는 줄을 출력
  • -r : 하위 디렉터리까지 검색
  • -n : 줄 번호 출력
  • -o : 일치하는 문자열만 출력

응용 예제

ps aux | grep apache

→ 실행 중인 프로세스에서 "apache" 관련 프로세스를 찾기

grep -E "error|fail|warn" logfile.txt

→ "error", "fail", "warn" 단어 중 하나라도 포함된 줄 출력 (-E 옵션으로 여러 패턴 검색 가능)


2. sed (Stream Editor)

sed는 파일의 내용을 변경하거나 특정 패턴을 찾아 대체하는 데 사용하는 스트림 편집기이다.

기본 사용법

sed 's/기존문자/새문자/' 파일명
  • s : 문자열 치환 (substitute)
  • /기존문자/새문자/ : 특정 문자열을 새 문자열로 변경

예제

sed 's/apple/banana/' fruits.txt

→ fruits.txt에서 첫 번째 "apple"을 "banana"로 변경 (한 줄에서 첫 번째 항목만 변경)

sed 's/apple/banana/g' fruits.txt

→ 모든 "apple"을 "banana"로 변경 (g: global)

주요 옵션

  • -i : 원본 파일을 직접 수정
  • -n : 출력 억제 (출력하려면 p 추가)
  • d : 특정 패턴이 포함된 줄 삭제

응용 예제

sed '/^#/d' config.txt

→ config.txt에서 주석(#으로 시작하는 줄) 제거

echo "123-456-7890" | sed 's/-//g'

→ 전화번호에서 - 제거하여 1234567890 출력


3. awk (Aho, Weinberger, Kernighan)

awk는 컬럼 단위로 데이터를 처리하는 강력한 텍스트 프로세싱 도구이다.

기본 사용법

awk '{print $1, $3}' 파일명

→ 첫 번째($1)와 세 번째($3) 컬럼 출력

예제

echo "apple banana cherry" | awk '{print $2}'

→ banana 출력 (두 번째 단어 선택)

awk -F ':' '{print $1, $3}' /etc/passwd

→ /etc/passwd 파일에서 :을 구분자로 사용하여 첫 번째(사용자명)와 세 번째(UID) 컬럼 출력

주요 기능

  • -F : 필드 구분자 지정
  • NR : 줄 번호 (Number of Record)
  • NF : 필드 개수 (Number of Fields)
  • if, for, while 문을 활용한 프로그래밍 가능

응용 예제

awk '$3 > 1000 {print $1, $3}' /etc/passwd

→ 세 번째 컬럼 값(UID)이 1000보다 큰 경우만 출력

ps aux | awk '$3 > 5 {print $1, $3, $11}'

→ CPU 사용률($3)이 5% 이상인 프로세스의 사용자명, CPU 사용률, 명령어 출력


 

grep 문자열 검색
sed 문자열 치환 및 삭제
awk 컬럼 기반 데이터 처리

 

ps aux | grep apache | awk '{print $2, $3, $11}'

→ apache 관련 프로세스의 PID, CPU 사용률, 명령 출력

 

 

반응형