CS/OS,Linux

sed, awk, jq 명령어

테크리빗 2026. 1. 9. 00:25
반응형

리눅스 서버에서 수만 줄의 로그나 설정 파일을 열지 않고도, CLI 환경에서 즉시 데이터를 추출하거나 수정할 수 있는 필수 명령어 3가지입니다.

 

sed(Stream Editor)

vi와 같은 편집기를 열지 않고 텍스트를 수정(Substitution), 치환, 삭제할 때 사용합니다.
주로 설정 파일의 내용을 스크립트로 자동 변경하거나, 개인정보(IP, 주민번호) 마스킹 처리에 활용됩니다.

 

기본문법
sed s/찾을문자/바꿀문자/g 파일명

# 1. (테스트) 화면에만 출력해보기 (원본 안 바뀜)
sed 's/True/False/g' config.conf

# 2. (실전) 원본 파일 내용을 덮어쓰기 (자동화 스크립트용)
sed -i 's/True/False/g' config.conf

 

(주의) 기본적으로는 화면에만 결과를 출력합니다. 원본 파일을 덮어쓰려면 -i (In-place) 옵션이 필수입니다.

 

awk(Aho, Weinberger, Kernighan)

텍스트를 '열(Column)' 단위로 쪼개서 데이터를 추출하고, 조건문을 걸어 통계를 낼 때 씁니다.
기본적으로 공백(스페이스, 탭)을 기준으로 열을 나눕니다. 엑셀의 '텍스트 나누기' 기능과 같습니다.

 

기본 문법
awk '{print $숫자} 파일명(여기서 숫자는 N번째 열)

# 1. 단순 추출: access.log에서 IP($1)와 상태코드($9)만 출력
awk '{print $1, $9}' access.log

# 2. 조건 필터링: 상태 코드가 '500'(서버 에러)인 줄의 IP만 뽑아라
awk '$9 == 500 {print $1}' access.log

 

sed, awk 왜 쓰는가?

파이썬(Python)은 강력하지만, DevOps 현장에서는 다음과 같은 이유로 sed, awk가 더 유리할 때가 많습니다.

  1. 속도 & 간편함: 파일 열기/읽기/쓰기 코드를 짤 필요 없이 단 한 줄(One-liner)로 끝납니다.
  2. 범용성: 파이썬이 설치되지 않은 레거시 서버나, 초경량 컨테이너 환경에서도 리눅스만 깔려있다면 100% 동작합니다.
  3. 파이프라인(|) 연결: 다른 명령어의 결과를 바로 받아 처리하기 좋습니다.

DevOps 활용 예시

# [배포 자동화] deployment.yaml 파일의 버전 태그를 v1.0 -> v2.0으로 즉시 변경
sed -i 's/v1.0/v2.0/g' deployment.yaml

# [장애 대응] 에러 난 파드(Pod)만 골라서 자동 삭제 (Kill)
# 조회 -> 'Error' 검색 -> 파드 이름($1)만 추출 -> 삭제 명령어로 전달
kubectl get pods -A | grep Error | awk '{print $1}' | xargs kubectl delete pod

 

jq(JSON Processor)

최신 클라우드/DevOps 환경(AWS, Kubernetes, Terraform)의 표준 데이터 형식인 JSON을 다루는 필수 도구입니다. sedawk는 구조화된 JSON 데이터 처리에 취약하므로, jq가 반드시 필요합니다.

기본 문법
명령어 | jq '.키이름'

# [가독성] 복잡한 JSON 결과를 예쁘게 정렬해서 보기 (Pretty Print)
aws ec2 describe-instances | jq .

# [데이터 추출] AWS 인스턴스 목록에서 'InstanceId' 값만 쏙 뽑아내기
aws ec2 describe-instances | jq '.Reservations[].Instances[].InstanceId'

 

실습 사이트

jq 연습: jqplay.org (강력 추천)

  • 왼쪽에 JSON 데이터를 넣고, 상단에 명령어를 입력하면 오른쪽에 결과가 바로 나옵니다.
  • 학습법: 구글에 "AWS json sample" 검색해서 넣고, 원하는 값만 뽑아보는 연습을 하세요.

sed/awk 연습: HackerRank - Linux Shell

  • 해커랭크 사이트의 'Shell' 파트에 가시면 Grep, Sed, Awk 문제들이 단계별로 있습니다.
  • 초반 5문제 정도만 풀어봐도 감이 옵니다.
반응형