sed vs. ed vs. vi: 텍스트 편집 도구 비교 분석
1. 서론
Sed, Ed, Vi는 모두 UNIX, UNIX Like OS, Genetic UNIX 시스템에서 널리 사용되는 Text Edit Tool.
각 도구는 서로 다른 특징과 용도를 가지고 있음.
2024.01.07 - [개발환경] - [CE] Text file : Text 파일이란?
2. 사용 방식
ed:
ed
는 Interactive Text Editor이면서 Line Editor의 대표.- 사용자가 command mode에서 command를 입력하여 text file을 직접 편집.
- 사용자는 session 기반으로 작업하며, command를 입력하고 결과를 확인하며 편집 작업을 진행.
sed:
sed
는 Non-Interactive Editor 이면서 Stream Editor의 대표.- pipeline
|
을 통해 text data stream을 처리하거나 script 내에서 사용되는 경우가 많음. sed
는 원본 파일을 직접 수정하지 않고stdin
(standard input stream)에서 데이터를 읽어 들여stdout
(standard output stream)으로 결과를 내보내는 방식으로 작동.- 내부에서는 buffer 역할을 하는 pattern space와 hold space를 사용함.
2024.05.11 - [Linux] - [linux] sed (stream editor) 사용법
vi:
vi
(orvim
)은 visual text editor (or screen text editor)의 일종으로, interactive editor임.- 사용자가 화면에 표시된 텍스트를 직접 보고 실시간으로 편집할 수 있음.
- visual editor로는
vim
,Emacs
등등이 UNIX like OS 및 Genentic UNIX OS에서 대표적임.
vi에서 명령어 모드의 substitution은
sed와 명령어가 똑같음.
https://dsaint31.tistory.com/473
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을 직접 수정하는 데 널리 사용됨.
- 사용자가 명령어를 입력하고 즉각적으로 편집 결과를 볼 수 있는 환경을 제공하며 파일의 특정 부분을 수정하거나 특정 행을 편집하는 등의 작업이 가능하지만 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를 지칭하며,
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 : 표현식 기초 및요약
https://dsaint31.tistory.com/473
https://reakwon.tistory.com/164
https://en.wikipedia.org/wiki/Sed](https://en.wikipedia.org/wiki/Sed
https://en.wikipedia.org/wiki/Vi_%28text_editor%29](https://en.wikipedia.org/wiki/Vi_%28text_editor%29
'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 |