개발/Bash 쉘스크립트

[Bash] 리눅스 쉘 스크립트 sed: 기본 사용 법 및 옵션 까지 모두 정리

일요일좋아하는사람 2025. 5. 5. 21:25
728x90
반응형

sed는 Bash에서 사용되는 매우 강력한 스트림 편집기(Stream EDitor)입니다. 주로 텍스트 파일이나 출력 내용을 수정할 때 사용되며, 정규표현식을 기반으로 한 검색과 치환, 삭제, 삽입 등의 작업을 간편하게 수행할 수 있습니다. 이 글에서는 sed 명령어의 기본 구조와 역할, 자주 사용되는 옵션과 사용법, 그리고 다양한 실전 예제를 통해 sed를 완벽하게 이해할 수 있도록 돕겠습니다.

sed 명령어의 역할

sed는 입력 스트림(파일 또는 표준 입력)의 내용을 라인 단위로 처리하여 변경된 결과를 출력하는 도구입니다. 다음과 같은 작업에 적합합니다:

  • 텍스트 치환
  • 특정 줄 삭제
  • 특정 줄 출력
  • 줄 삽입 또는 추가
  • 패턴 매칭을 이용한 수정

스크립트 내에서 대량의 텍스트 처리 작업이 필요할 때 매우 유용하게 사용됩니다.

sed 기본 사용법

sed [옵션] '명령' [파일명]
  • 명령: s/검색패턴/대체문자열/옵션 형태가 가장 일반적
  • 파일명을 생략하면 표준 입력을 처리함

주요 옵션 및 사용법

s: 치환 (substitute)

  • 역할: 검색된 패턴을 다른 문자열로 치환
  • 사용법:
  • sed 's/old/new/' file.txt
  • 예제:
  • echo "hello world" | sed 's/world/bash/'
  • 결과: hello bash
  • 옵션 설명:
    • g: 모든 일치 항목 치환
    • 1: 첫 번째 항목만 치환 (기본값)

예제: 전체 치환

sed 's/foo/bar/g' file.txt

d: 삭제 (delete)

  • 역할: 특정 줄 삭제
  • 사용법:
  • sed '2d' file.txt
  • 예제:
  • printf "a\nb\nc" | sed '2d'
  • 결과: a c

p: 출력 (print)

  • 역할: 특정 줄만 출력
  • 사용법:
  • sed -n '3p' file.txt
  • 옵션 -n 필요: 전체 출력 억제

a: 줄 뒤에 추가 (append)

  • 역할: 지정 줄 뒤에 새 텍스트 추가
  • 사용법:
  • sed '2a\추가된 줄' file.txt
  • 예제:
  • printf "1\n2\n3" | sed '2a\hello'
  • 결과:
  • 1 2 hello 3

i: 줄 앞에 삽입 (insert)

  • 역할: 지정 줄 앞에 새 텍스트 삽입
  • 사용법:
  • sed '2i\삽입된 줄' file.txt

c: 줄 변경 (change)

  • 역할: 해당 줄을 새 텍스트로 교체
  • 사용법:
  • sed '2c\새로운 줄' file.txt

y: 문자 치환 (transliterate)

  • 역할: 문자 단위 치환 (tr 명령과 유사)
  • 사용법:
  • echo "abc" | sed 'y/abc/ABC/'
  • 결과: ABC

정규표현식 사용

  • 역할: 패턴 기반 텍스트 처리
  • 예제:
  • echo "apple banana apple" | sed 's/\(apple\)/[\1]/g'
  • 결과: [apple] banana [apple]

실제 사용 예제

1. 파일 내 단어 전체 치환

sed -i 's/old/new/g' example.txt
  • -i: 파일을 직접 수정 (백업 생성은 -i.bak)

2. 특정 줄 제거

sed '5d' file.txt
  • 5번째 줄 삭제

3. 줄 번호 범위 치환

sed '1,3s/foo/bar/' file.txt
  • 1~3줄 사이에서 foobar로 변경

4. 여러 명령 연속 실행

sed -e 's/foo/bar/' -e 's/baz/qux/' file.txt
  • -e: 여러 명령 지정

5. 주석 제거 및 빈 줄 삭제

sed -e '/^#/d' -e '/^$/d' config.txt
  • ^#: 주석 줄 삭제
  • ^$: 빈 줄 삭제

sed는 복잡한 텍스트 변환도 간단하게 수행할 수 있도록 도와주는 필수 도구입니다. 다양한 명령어 조합과 정규표현식을 활용하면 거의 모든 텍스트 처리 작업을 자동화할 수 있으므로, 실무에서 자주 활용되는 만큼 충분한 연습이 필요합니다.

728x90
반응형