Bash 쉘 프로그래밍 – 8.1 sed 명령 – 들어가며

반갑 습니다. 썬구루입니다. 음. 이번 게시물부터 유닉스, 리눅스에서 사용할 수 있는 비상호대화형 스트림 편집기(Non-interactive stream oriented editor)인 sed 명령에 대해 올려볼까 합니다. 이전 게시물에서 우리는? 리눅스에서 텍스트 파일의 내용을 보는 방법과 내용을 수정하는 방법에 대해 알아봤었습니다. head, tail, more, less, cat 명령 기억과인시죠? 만약 기억과인지 않는다면 리눅스 기초 부분을 한 번 더 보시길 바랍 니다. 이 명령들은 이용하여 텍스트 파일의 일부분을 출력하거과인 제어키를 이용하여 내용을 확인할 수 있죠.텍스트 파일에서 특정 패턴이과인 문자열에 정합 되는 (정규 포현식을 사용하여…)을 추출하기 위해  grep, egrep, fgrep을 사용했었죠. 그리하여 패턴에 일치하는 부분에서 위 또한는 아래 줄 일부분을 같이 출력하기 위해 아래와 같은 옵션을 사용할 수 있습니다.

위에서 언급한 명령들은 예기을 보거나 필터링하기 위해 사용하는 명령들이죠. 만약 텍스트 파일 예기을 수정해야 합니다면 어떻게 해야 할까요? ed, vi, emacs 편살림사리를 사용할 수 있는데 ed는 나우누리, 천리안, 하이텔 시절의 편살림사리이고 emacs는 사용하기 어려워서 일반적으로 텍스트 문서 편살림사리하면 vi 편살림사리를 스토리하죠.시스템 또는 서비스 관련 파일을 편집하기 위해 vi 편살림사리를 사용하는데 리눅스/유닉스 시스템 엔지니어라고 합니다면 vi 편살림사리 사용 방법은 필수적으로 알고 있어야 하죠. 만약 파일 예기의 특정 줄을 출력하거나 여러 파일들의 예기을 수정해야 할 경우 어떻게 해야 할까요? 그리고 1의 서버 시스템이 아닌 여러 시스템들에 동일한 적용해야 합니다면 어떻게 해야 할까요? 다르게 비유(?) 해본다면 책장을 만들어야 하는데 나사를 이용하여 나무 판들을 서로 결속시켜야 하는데 십자드라이버를 사용합니다면 당연 드라이버를 사용하여 책장을 만들 수 있겠죠. 근데 동일한 책장을 하루에 30개씩 만들어야 합니다면 반복된 작업으로 미쳐버리는 거죠.반복적인 작업은 10분 이상만 해도 짜증을 동반하기 마련입니다.  효율적이면서 생산적으로 작업을 할 수 있으면 얼마나 좋을까요? 만약 손 드라이버가 아닌 전동 드라이버를 사용합니다면 손 드라이버를 사용하는 것보다 작업 시간을 단축시키면서 생산성을 높일 수 있을 것입니다. 힘도 더욱더 적게 들이면서요.여러 파일에 걸쳐 반복된 작업을 해야 할 경우 sed는 전동 드라이버 역할을 합니다. 동시에 정시 퇴근(?) 할 수 있도록 여러분들을 도와주죠.

>

sed는 아래와 같이 특정 줄을 출력하고자 할 때

패턴에 일치하는 줄을 출력하고자 할 때

패턴에 일치하는 말을 변경하고자 할 때

유용하게 사용할 수 있으며 실행할 명령들을 파일로부터 받아들여 처리할 수도 있음니다. 아무튼 결론을 이얘기하자면 sed를 알아두면 대규모(?) 시스템을 관리할 때 몸이 편하는 것이죠. 이후 게시물부터 sed 명령 사용법에 대해 자세히 알아보도록 하겠음니다.