시스템(Linux)

sed(Stream Editor)에 대해 알아보겠습니다.

forward error correction Circle 2025. 1. 31. 08:17
반응형

Ⅰ. sed(Stream Editor)란?

 Unix 및 Linux 시스템에서 텍스트를 처리하고 변환하는 강력한 명령줄 도구입니다. 파일이나 입력 스트림을 수정하거나 패턴을 검색하고 변환하는 데 자주 사용됩니다. 주로 자동화된 텍스트 처리에 유용하며, 파일을 직접 수정하지 않고 출력으로 결과를 보여주는 방식으로 작동합니다.

Ⅱ. sed(Stream Editor) 기본 구조

sed [옵션] [명령] [파일]

[옵션]: 동작을 변경하는 다양한 옵션.
[명령]: 수행할 작업(예: 검색 및 치환).
[파일]: 입력 파일(생략 시 표준 입력을 처리).

Ⅲ. sed(Stream Editor) 옵션

옵션명 설명
-n 기본 출력을 억제합니다. 
특정 명령에 의해 출력이 발생해야만 결과가 표시됩니다.
-e 여러 명령을 순서대로 실행합니다.
-i 원본 파일을 직접 수정합니다.
-r 정규 표현식 확장을 활성화합니다
(기본적으로 일부 시스템에서 필요).

Ⅳ. sed(Stream Editor) 명령

옵션명 설명
a\ 새로운 행을 추가
c\ 현재 행의 내용을 새로운 내용으로 변경
i\ 선택된 행의 윗줄에 텍스트를 삽입
n 입력된 행이 아닌 다음 명렁어에서 처리
! 선택된 행을 제외한 전체 행에 명령어 적용
d 행 삭제
p 전체 데이터 출력
s 문자열 치환
g 문자열/파일내에 모든 패턴들을 검색하고 전체에 대해 치환
i 대소문자에 영향을 안받고 실행
p 치환된 행들만 출력
y 한 문자를 다른 문자로 변환

Ⅴ. sed(Stream Editor) 주요 명령

ⅰ. 치환(s) : 문자열이나 패턴을 다른 값으로 치환합니다.

[사용방법]
sed '[옵션명][검색할 문자열][변경할 문자열][옵션명]' [대상파일]

[예시]
[root@feccle test]# sed 's/test/newtest/g' test.sh

[변경 전]
[root@feccle test]# cat test.sh
rkskekfkakqktkdkwkckzkxkckvk

test

test


1234

test

[변경 후]
[root@feccle test]# sed 's/test/newtest/g' test.sh
rkskekfkakqktkdkwkckzkxkckvk

newtest

newtest


1234

newtest

s : substitute, 약자로 대체하는 의미를 가집니다.
/test/: 검색할 패턴.
/newtest/: 대체할 텍스트.


ⅱ. 특정 행 삭제(d)

[사용방법]
sed '[특정 행] [명령어] [대상 파일]

[예시]
[root@feccle test]# sed '3d' test.sh

[변경 전]
[root@feccle test]# cat test.sh
rkskekfkakqktkdkwkckzkxkckvk

test

test


1234

test


[변경 후]
[root@feccle test]# sed '3d' test.sh
rkskekfkakqktkdkwkckzkxkckvk


test


1234

test


ⅲ. 특정 패턴이 포함된 모든 줄 삭제

[사용방법]
sed '[특정 패턴] [명령어] [대상 파일]

[예시]
[root@feccle test]# sed '/test/d' test.sh

[변경 전]
[root@feccle test]# cat test.sh
rkskekfkakqktkdkwkckzkxkckvk

test

test


1234

test


[변경 후]
[root@feccle test]# sed '/test/d' test.sh
rkskekfkakqktkdkwkckzkxkckvk




1234


ⅳ. 행 삽입(i, insert) : 특정 줄 위에 텍스트를 추가.

[사용방법]
sed '[특정 행] [명령어] [대상 파일]

[예시]
[root@feccle test]# sed '1i\new_Test' test.sh

[변경 전]
[root@feccle test]# cat test.sh
rkskekfkakqktkdkwkckzkxkckvk

test

test


1234

test


[변경 후]
[root@feccle test]# sed '1i\new_Test' test.sh
new_Test
rkskekfkakqktkdkwkckzkxkckvk

test

test


1234

test

 

ⅴ. 행 삽입(a, add) : 특정 줄 아래에 텍스트를 추가.

[사용방법]
sed '[특정 행] [명령어] [대상 파일]

[예시]
[root@feccle test]# sed '1ia\new_Test' test.sh

[변경 전]
[root@feccle test]# cat test.sh
rkskekfkakqktkdkwkckzkxkckvk

test

test


1234

test



[변경 후]
[root@feccle test]# sed '1a\new_Test' test.sh
rkskekfkakqktkdkwkckzkxkckvk
new_Test

test

test


1234

test

 ⅵ. 파일 수정 : 기본적으로 sed는 원본 파일을 수정하지 않습니다. 원본 파일을 수정하려면 -i 옵션을 사용합니다.

[사용방법]
sed [옵션명] '[명령][/검색할 문자열][/변경할 문자열]' [대상 파일]

[예시] 
[root@feccle test]#  sed -i 's/test/new_test/' test.sh

[변경 전]
[root@feccle test]# cat test.sh
rkskekfkakqktkdkwkckzkxkckvk

test

test


1234

test
[변경 후]
[root@feccle test]# sed -i 's/test/new_test/' test.sh
[root@feccle test]# cat test.sh
rkskekfkakqktkdkwkckzkxkckvk

new_test

new_test


1234

new_test

 

 ⅶ. 로그 파일 분석 : 특정 문자열을 통해 ERROR 가 발생했었는지 확인

[사용방법]
sed [옵션명] '[명령][/검색할 문자열]' [대상 파일]

[예시]
[root@feccle test]#  sed -n '/ERROR/p' /var/log/httpd/error_log

 

반응형