
sed vs. ed vs. vi: 텍스트 편집 도구 비교 분석
1. 서론
sed, ed, vi는 모두 UNIX, UNIX Like OS, Genetic UNIX 시스템에서 널리 사용되는 Text Edit Tool.
각 도구는 서로 다른 특징과 용도를 가지고 있음.
참고: text란? 2024.01.07 - [개발환경] - [CE] Text file : Text 파일이란?
[CE] Text file: Text 파일이란?
"text file" 은사람과 컴퓨터가 읽을 수 있고 처리할 수 있도록 encoding 된 characters 로 이루어진electric text lines 로 구성되는 형태의파일 포맷 및 해당 파일을 가르킴.https://dsaint31.me/mkdocs_site/CE/ch01/code_
ds31x.tistory.com
2. 사용 방식
ed:
ed는 Interactive Text Editor이면서 Line Editor의 대표.- 1969년 그 유명한 Ken Thompson(Unix 공동개발자)이 개발한 Unix의 핵심 툴이었음
- 사용자가 command mode에서 command를 입력하여 text file을 직접 편집.
- 사용자는 session 기반으로 작업하며, command를 입력하고 결과를 확인하며 편집 작업을 진행.
sed (stream editor):
sed는 Non-Interactive Editor 이면서 Stream Editor의 대표.- 1973~1974년 Bell Lab의 Lee E. McMahon이 개발한 것으로 기억함(정확하지 않음. ㅠㅠ)
- pipeline
|을 통해 text data stream을 처리하거나 script 내에서 사용되는 경우가 많음. sed는 원본 파일을 직접 수정하지 않고stdin(standard input stream)에서 데이터를 읽어 들여stdout(standard output stream)으로 결과를 내보내는 방식으로 작동.- 내부에서는 buffer 역할을 하는 pattern space와 hold space를 사용함.
shell programming에서 간단한 문자열 처리에선 sed를 쓰는 경우가 종종 있으나, 개인적으로 shell을 첨부터 짜는 경우가 많지는 않고 유지보수할 때 주로 쓰는지라... python이나 c등의 문자열 처리가 더 편하다고 생각됨. 때문에 새로 작성하는 경우고 복잡한 문자열 처리라면 꼭 shell로만 작성해야하는 제한이 없다면 python을 통한 문자열 처리를 선호한다.
2024.05.11 - [Linux] - [linux] sed (stream editor) 사용법
[linux] sed (stream editor) 사용법
sed (stream editor) 사용법sed (Stream Editor)는 text stream을 처리하고 변형하는 데 사용되는 매우 강력한 command based editor.처리를 명령어로 구성된 script로 지정함.2024.05.11 - [Linux] - [Linux] sed vs. ed vs. vi : 텍
ds31x.tistory.com
vi:
vi(orvim)은 visual text editor (or screen text editor)의 일종으로, interactive editor임.- 1976년 Bill Joy가 개발했고, 오늘날에는 1991년 Bram Moolenaar가 vi의 기능을 계승한 vim이 vi라고 불릴 정도로 대체한 상태임.
- 사용자가 화면에 표시된 텍스트를 직접 보고 실시간으로 편집할 수 있음.
- visual editor로는
vim,Emacs, nano 등등이 UNIX like OS 및 Genentic UNIX OS에서 대표적임.- nano 보다는 vi (=vim)나 emacs (1976년 등장) 를 익히길 추천함.
- nano는 1999년 Pico에디터를 대체하기 위해 개발된 단순 텍스트 에디터 (GNU 프로젝트의 일부).
- linux 유저들은 vi파와 emacs파 둘로 나뉜다는 애기가 있음.
- nano 보다는 vi (=vim)나 emacs (1976년 등장) 를 익히길 추천함.
참고로
vi에서 명령어 모드의 substitution은
sed와 명령어가 똑같음.
https://dsaint31.tistory.com/473
[Linux] vi (or vim) 사용법 정리
vi (or vim) 사용법 정리 더보기관련자료.https://ds31x.tistory.com/174 [CE] Text file : Text 파일이란?"text file" 은 사람과 컴퓨터가 읽을 수 있고 처리할 수 있도록 encoding 된 characters 로 이루어진 electric text li
dsaint31.tistory.com
3. 기능적 차이
ed:
ed는 파일 전체를 메모리에 로드함.- 이를 통해사용자가 파일 내용을 자유롭게 탐색하고 수정할 수 있도록 지원.
- text file을 직접 열어 수정하는 데 적합하나, 주로 visual editor가 등장하기 전에 사용되던 tool.
sed:
sed는 일반적으로 한 번에 한 줄씩 데이터를 처리.- 각 줄에 대해 정의된 명령(치환, 삭제, 추가 등)을 실행한 후 결과를 출력함.
- regular expression과 함께 사용되어 pattern matching, data transform 및 filtering에 주로 사용됨.
- 위의 작업을 script file 에서 대량의 파일에 자동화 하여 적용하기 위해 사용됨.
vi:
vi는 사용자가 화면에 표시된 텍스트를 직접 보고 편집할 수 있음.- 다양한 편집 명령과 키 조합을 제공하며, 텍스트 블록의 복사, 붙여넣기, 이동, 삭제 등의 작업을 쉽게 수행 가능함.
- 프로그래머나 시스템 관리자가 텍스트 파일을 편집할 때 주로 이용됨.
4. 용도
ed:
ed는 파일을 대화형으로 편집하고 싶을 때 사용되었음.- 초기 유닉스 시스템에서 text file을 직접 수정하는 데 널리 사용됨: 오늘날에는 interactive editor로 보다 나은 vim 등이 애용됨.
- 사용자가 명령어를 입력하고 즉각적으로 편집 결과를 볼 수 있는 환경을 제공하며 파일의 특정 부분을 수정하거나 특정 행을 편집하는 등의 작업이 가능하지만 visual editor보다는 쓰기 불편하며, 자동화 측면에서는
sed보다 활용도가 떨어짐.
sed:
- 대규모 파일이나 데이터 스트림을 처리할 때, 특히 몇몇의 변환을 순서대로 파일들에 적용하고 싶을 때 매우 유용.
- script file 또는 terminal command를 통해 non-interactive execution이 가능: (batch processing에 유리)
- regular expression과 함께 사용되어 text의 pattern을 검색, 치환, 삭제 할 수 있음.
- batch processing, data cleaning, log file analysis 등의 자동화된 text processing에 적합함.
vi:
vi는 파일을 시각적으로 실시간 편집하고 싶을 때 사용.- text 를 block 단위로 복사, 붙여넣기, 이동, 삭제 등의 작업이 실제로 text를 보면서 쉽게 수행가능함.
- 오늘날 text editor는 visual text editor를 지칭하며, 앞서의 editor 들에 비해 매우 사용이 쉬운 툴임;
- 하지만, 오늘날에는
vi를사용할 경우 power user 라고 불릴 정도로 더 사용이 쉬운 visual editor들이 등장함.
- 하지만, 오늘날에는
- 단, 쉽고 직관적인 사용이 가능한 visual text editor들은 기능이 한정되기 쉽기 때문에,
vi는 여전히 많은 프로그래머와 시스템 관리자들에게 애용됨. - 다양한 편집 명령과 키 조합을 사용하여 효율적으로 편집 작업을 진행이 가능.
5. 사용 예
ed:
- 사용자가 특정 행을 보고 싶거나, 특정 위치에 텍스트를 삽입하거나 변경할 필요가 있을 때 유리 (file 전체를 보지 않고).
- 예를 들어, 사용자가 파일의 중간 부분을 수정하고 싶을 때
ed를 사용하면 해당 부분을 쉽게 찾아 수정 가능.
sed:
sed는 주로 script file이나 command pipeline의 일부로 사용됨.- 예를 들어, 웹 서버 로그 파일에서 특정 IP 주소의 로그 라인만 추출하거나, 구성 파일에서 주석을 제거하는 등의 작업에 사용되기 쉬움.
vi:
vi는 다양한 텍스트 편집 작업에 사용됨.- 예를 들어, program source code 파일을 편집할 때
vi를 사용하여 souce code를 쉽게 복사, 붙여넣기, 이동, 삭제할 수 있음. - 또한 강력하고 다양한 편집 명령과 키 조합을 제공하여 효율적으로 편집 작업이 가능함.
6. 장점 및 단점
| 장점 | 단점 | |
| ed | 간단하고 배우기 쉬움. 대화형 편집에 적합 파일 전체를 메모리에 로드하지만, 일부 부분만을 수정할 때 편리. |
script file에서 사용이 불편 대규모 파일 처리가 쉽지 않음. visual editor에 비해 비직관적. |
| sed | scripting file에 강력하고 효율적인 사용이 가능 regular expression 과 함께 패턴 매칭 및 데이터 변형에 적합 대규모 파일 처리에 적합 |
Non-interactive editor는 직관적이 사용이 어려움. 이는 시각적 편집 기능 부족으로 사용이 쉽지 않음 |
| vi | 시각적 편집에 강력하고 효율적 다양한 편집 명령과 키 조합 제공 텍스트 블록 작업에 유용 |
다른 visual text editor에선 배우기 어려운 편. 명령어 기반 편집 방식 |
7. 선택 가이드
- 간단하고 빠른 편집:
ed - 스크립팅 및 자동화:
sed - 시각적 편집 및 고급 기능:
vi
같이 읽어보면 좋은 자료들
2023.07.03 - [Python] - [Python] Regular Expression : 표현식 기초 및 요약
[Python] Regular Expression: 표현식 기초 및 요약
Regular Expression : 정규표현식 요약Regular Expression (re) 의 기본적인 operator는 다음과 같음.Basic operatorDescription.Any character except `\n` (newline)aThe character a itselfabThe string ab itselfx|yx or y\yEscapes a special characte
ds31x.tistory.com
https://dsaint31.tistory.com/473
[Linux] vi (or vim) 사용법 정리
이동관련 기본이동 (Normal mode에서) h : 왼쪽으로 한 글자 이동. j : 한 행 아래로. k : 한 행 위로. l : 오른쪽으로 한 글자 이동. 화면내 이동 H : 현재 화면에서 가장 위의 행으로 M : 현재 화면에서 가
dsaint31.tistory.com
https://reakwon.tistory.com/164
[리눅스] sed 명령어를 이용해 원하는 정보를 추출 - 개념과 예제 모음
SED(Stream Editor) SED는 Stream Editor의 약자로 sed라는 명령어로 원본 텍스트 파일을 편집하는 유용한 명령어입니다. 리눅스의 editor라하면 생각나는 에디터가 있지 않나요? vi 편집기가 대표적인데, 여
reakwon.tistory.com
https://en.wikipedia.org/wiki/Sed](https://en.wikipedia.org/wiki/Sed
sed - Wikipedia
From Wikipedia, the free encyclopedia Standard UNIX utility for editing streams of data sed ("stream editor") is a Unix utility that parses and transforms text, using a simple, compact programming language. It was developed from 1973 to 1974 by Lee E. McMa
en.wikipedia.org
https://en.wikipedia.org/wiki/Vi_%28text_editor%29](https://en.wikipedia.org/wiki/Vi_%28text_editor%29
vi (text editor) - Wikipedia
From Wikipedia, the free encyclopedia Keyboard-oriented text editor vi (pronounced as distinct letters, )[1] is a screen-oriented text editor originally created for the Unix operating system. The portable subset of the behavior of vi and programs based on
en.wikipedia.org
https://dsaint31.tistory.com/444
[Linux] nano Editor 간단 사용법
주로 vi만 사용하기 때문에 nano는 그닥...문제는 다른 사람 장비에서 간단한 일을 할 때, vi가 없는 경우가 있고, editor 지정을 vi로 바꾸며 원래 주인이 답답해하는 경우가 발생한다. (그렇다고 매
dsaint31.tistory.com
'Linux' 카테고리의 다른 글
| [linux] example: sed: -n option (0) | 2024.05.11 |
|---|---|
| [Linux] sed (stream editor) 사용법 (0) | 2024.05.11 |
| [linux] Gateway ip address 확인: Ubuntu (1) | 2024.02.06 |
| [zsh] 환경변수 사용하기: Referencing Environment Variable (0) | 2024.01.29 |
| [Linux] cmd: disk usage and disk free: du and df (1) | 2024.01.24 |