본문 바로가기
Linux

[Linux] sed vs. ed vs. vi : 텍스트 편집 도구 비교

by ds31x 2024. 5. 11.

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 파일이란?

 

[CE] Text file : Text 파일이란?

"text file" 은 사람과 컴퓨터가 읽을 수 있고 처리할 수 있도록 encoding 된 characters 로 이루어진 electric text lines 로 구성되는 형태의 파일 포맷 및 해당 파일을 가르킴. 특징. text file 이 가지는 다양한

ds31x.tistory.com


2. 사용 방식

ed:

  • ed는 Interactive Text Editor이면서 Line Editor의 대표.
  • 사용자가 command mode에서 command를 입력하여 text file을 직접 편집.
  • 사용자는 session 기반으로 작업하며, command를 입력하고 결과를 확인하며 편집 작업을 진행.

sed:

  • sedNon-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) 사용법

 

[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 (or vim)은 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

 

[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을 직접 수정하는 데 널리 사용됨.
  • 사용자가 명령어를 입력하고 즉각적으로 편집 결과를 볼 수 있는 환경을 제공하며 파일의 특정 부분을 수정하거나 특정 행을 편집하는 등의 작업이 가능하지만 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 : 표현식 기초 및요약

 

[Python] Regular Expression : 표현식 기초 및요약

Regular Expression : 정규표현식 요약 Regular Expression (re) 의 기본적인 operator는 다음과 같음. Basic operator Description . Any character except `\n` (newline) a The character a itself ab The string ab itself x|y x or y \y Escapes a spe

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