리눅스 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 같이 보기[ | ]

8 참고[ | ]

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