리눅스 sed

(Sed에서 넘어옴)

1 개념[편집]

sed, "stream editor"
세드, "스트림 에디터"
  • 텍스트 변환 유틸
  • 줄단위(\n) 처리를 함
  • 줄단위 처리가 기본이지만 메모리를 이용한 여러줄 처리도 가능함

2 구조[편집]

sed 는 pattern space와 hold space 로 이뤄져 있음

Sed_structure.png

2.1 pattern space[편집]

  • 입력 스트림을 통해 한 줄 씩 받아 pattern space 저장됨
  • 수정 명령, 프린트 명령들을 받아 처리되는 부분임

2.2 hold space[편집]

  • hold space는 임시 저장소 역할을 함
  • 수정 명령 등의 영향을 받지 않아 pattern space 에서 처리된 내용을 hold space에 옮겨 온 후 필요한 시점에 다시 가져올 수 있음

3 문법[편집]

sed [옵션] [스크립트] [파일명] ...

4 예시[편집]

4.1 기본 출력[편집]

$ echo -e "aaa\nbbb\nccc\nddd" | sed ""
aaa
bbb
ccc
ddd
→ sed는 echo 출력 값을 받아 pattern space 에서의 값을 단순 출력함

4.2 줄 삭제[편집]

$ echo -e "aaa\nbbb\nccc\nddd" | sed "2d"
aaa
ccc
ddd
→ d를 사용하여 줄삭제. 여기에서는 2d이므로 2번째 줄 삭제.

5 응용[편집]

5.1 문자 치환[편집]

  • 파일 내 문자열 치환
sed -i "s/변경전문자열/변경후문자열/g" [파일]
-i 옵션을 추가하면 화면에 결과를 출력하는 대신 선택된 파일의 내용을 변경함
→ 문자 치환은 s/regexp/replacement/[flag]의 형태를 가짐

6 실습[편집]

[root@zetawiki ~]# cat /etc/php.ini | grep ^short_open_tag
short_open_tag = Off
[root@zetawiki ~]# cp /etc/php.ini /etc/php.ini.old
[root@zetawiki ~]# sed -i "s/short_open_tag = Off/short_open_tag = On/g" /etc/php.ini
[root@zetawiki ~]# diff /etc/php.ini.old /etc/php.ini
229c229
< short_open_tag = Off
---
> short_open_tag = On

7 같이 보기[편집]

문서 댓글 ({{ doc_comments.length }})
{{ zf.userName }}
{{ comment.name }} {{ comment.created | snstime }}