## 개요 앞서 두가지 종류의 문자열을 다룰 수 있는 리눅스 도구들에 대해서 알아보았다. [[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를 이용하는 것보다 가볍고 정확한 질의가 가능하다. 이 내용을 [[로그 포렌식]] 에서 최종적으로 구체적으로 다뤄보겠다.