## 개요
앞서 두가지 종류의 문자열을 다룰 수 있는 리눅스 도구들에 대해서 알아보았다. [[awk]]이랑 [[grep]] 이었는데, 그 시리즈 중 마지막에 있는 `sed`이다.
## Explanation
입력되는 데이터에 대해 일부의 결과 혹은 검색하고자 하는 결과만 가져오는 둘과는 다르게, `sed`는 결과를 보기 좋게, 혹은 필요한 정보만 노출되게, 편집을 해주는 command-line 프로그램이다.
## Usage
```
sed [option] [argument] [file]
```
### Options
- -n : 자동 출력 생략 ( 모든 파일 내용을 출력하지 않고 원하는 부분만 출력할 때)
- -e : 다중 편집 기능 ( 2개 이상의 패턴을 이용할 때)
### 정규식
- ^ : 접두사
- $ : 접미사
- . : 특정 문자 하나
- * : 임의의 선행 문자
- \[\] : 대괄호 사이의 문자 집합중 하나와 대응
- \[^\] : 대괄호 사이의 문자 집합중 대응되지 않는 것
- \\(..\\\) : 해당 문자열 저장
- & : 치환
- \\< : 단어의 시작 지시자
- \\> : 단어의 끝 지시자
- x\\{m\\} : 문자 x를 m번 반복
- x\\{m,\\\} : 문자 x를 최소 m번 반복
- x\\{m,n\\\} : 문자 x를 최소 m번, 최대 n번 반복
### 플래그
- a\\ : 현재 행에 새로운 행 추가
- c\\ : 현재 행의 내용을 새로운 내용으로 교체
- i\\ : 현재 행 위에 텍스트 삽입
- h : 패턴 스페이스 내용을 복사
- H : 패턴 스페이스 내용을 추가
- g : 패턴 스페이스에 복사
- G : 패턴 스페이스에 내용을 추가
- l : 출력 불가능한 특수문자 출력
- ! : 해당 행을 제외한 나머지 행에 명령어 적용
- r : 파일 읽기
- d : 행 삭제
- p : 행 출력
- s : 문자열 치환
-
## 결론
`sed`를 잘 활용한다면, 검색에 쓸모없는 데이터를 삭제하거나 보여서는 안될 개인정보를 마스킹할 수도 있을 것이다. 더 나아가 원할한 검색을 위해 데이터를 수정하는 도구로써 이용될 수 있다. [[awk]]이랑 [[grep]]을 `sed`랑 잘 조합한다면 웬만한 데이터베이스 gui를 이용하는 것보다 가볍고 정확한 질의가 가능하다.
이 내용을 [[로그 포렌식]] 에서 최종적으로 구체적으로 다뤄보겠다.