본문 바로가기
목차
Linux

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

by ds31x 2024. 5. 11.
728x90
반응형

https://youtu.be/JbdI3tvZXek?si=s45KqmLr8FLI3WxV

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):

  • sedNon-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 (or vim)은 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파 둘로 나뉜다는 애기가 있음.
참고로
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

 


 

728x90