개발/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줄 사이에서
foo
를bar
로 변경
4. 여러 명령 연속 실행
sed -e 's/foo/bar/' -e 's/baz/qux/' file.txt
-e
: 여러 명령 지정
5. 주석 제거 및 빈 줄 삭제
sed -e '/^#/d' -e '/^$/d' config.txt
^#
: 주석 줄 삭제^$
: 빈 줄 삭제
sed
는 복잡한 텍스트 변환도 간단하게 수행할 수 있도록 도와주는 필수 도구입니다. 다양한 명령어 조합과 정규표현식을 활용하면 거의 모든 텍스트 처리 작업을 자동화할 수 있으므로, 실무에서 자주 활용되는 만큼 충분한 연습이 필요합니다.
728x90
반응형