[리눅스 마스터][linux, UNIX] [편집][shell] ed (line editer) 사용예

 

[편집][shell] ed (line editer) 사용예

ed (line editer)

ed는 간단한 line edit이다. 솔직히 요즘 linux 속에 들어 있는 pico나 vi와

같이 훌륭한 editer들을 두고서 ed를 사용하는 것은 우스울지도 모르겠지만

shell script를 하다 보면 ed의 위력을 상당히 느낄수 있다.

특히 shell script에서 here document 부분에서 사용되어지는 ed 의 위력은

직접 해 보지 않으면 알수가 없을 것이다.

일단 간단한 명령어들 부터 보겠다. ed의 실행은 ed “file name” 으로 실행을 한다.

  i : 쓰기 mode로 전환한다. vi의 i 와 같은 역할을 한다.

  .(dot) : 쓰기 mode를 마친다.

  d : 한 라인을 삭제한다

  w : 저장을 한다.

  q : ed 를 종료한다.

  + : 한줄아래로 이동을 한다.

  – : 한줄 위로 이동을 한다.

  , : 첫라인 부터 마지막 라인까지를 지정한다. %로 사용하기도 한다.

  ; : 현재 라인 부터 마지막 라인까지의 범위를 지정을 한다.

  $ : 마지막 라인을 지정한다.

  g : global을 의미한다.

  s : 대체를 한다.

그럼 위의 명령을 가지고 간단한 문법들을 설명해 보겠다.

g/show/

이것은 file의 전체 내용중에서 show 라는 단어들을 모두 검색하여

출력을 하는 것을 의미한다. 이것의 용도는 아래의 예제들에서 보겠다.

,s/old/new/g

이것은 첫번째 라인에서 부터 마지막 라인까지 모든 old라는 단어를

new로 대체하라는 의미이다. 여기서

,s/old/new/

와의 차이는 아래의 경우에는 모든라인(,)에서 걸리는 첫번째 old를

show로 대체를 하는 차이를 가진다. 즉 모든 old가 아니라는 것이다.

g의 역할은 이렇게 사용이 된다.

  

이것은 바로 위의 ,s/old/new 와 동일한 의미를 가진다.

또한 범위를 지정하는 방식으로 아래와 같이 사용을 할수가 있다.

(4,$)s/old/new/g

이것은 4번째 line부터 마지막 line까지 모든 old를 new로 대체한다.

대충 이정도의 명령만 알면 here document를 사용하는데 별 무리가 없다.

그럼 이 명령들을 가지고 실제로 변경을 하는 예를 들어 보겠다.

예제 1 )

g/#### $ip $location Start/ -> 일단 #### $ip $location Start 줄을 찾는다.

+  -> 그리고 다음 line으로 이동을 한다.

i  -> 이동한 line에서 쓰기 모드로 전환한다.

    -> 실질적인 내용이 들어간다. 이 line은 공백라인을 입력한다.

<VirtualHost $ip>

ServerAdmin $user@$dns

ServerName $dns

DocumentRoot $home/docs

ScriptAlias /cgi-bin/ $home/cgi-bin/

ServerAlias *.$dns  $dns

CustomLog /var/logs/$dns.access_log common

</VirtualHost>

.  -> 쓰기 모드를 마친다.

w  -> 저장을 한다.

q  -> ed를 종료한다.

예제 2 )

,s/var_dns/$dns/g  -> 글 전체의 모든 var_dns를 $dns로 변경한다.

,s/var_mx/$mx/n    -> 글전체의 각 line의 n번째 var_mx를 $mx로 변경

w   -> 저장을 한다.

q   -> 종료를 한다.

g/”WORD”/ 를 사용할때 위와 같이 사용을 하기 위해서는 “WORD”는

유일한 단어여야 한다. 프로그래밍을 할때 변수가 중복이 되지 않는

것처럼 위의 예제는 shell script에서 file에 접근을 할때 사용하는 예일

뿐이다.

ed의 기능은 여기에 나타나 있는 것 보다 훨씬 강력한 명령들이 많이

있다. 단순히 shell script에서 ed를 사용한다면 이정도만 가지고도

충분히 사용을 할수 있지만 더 많은 것을 알고 싶다면 man ed를 하여

살펴 보기를 바란다.

/old/new

 

[출처] http://nblog.syszone.co.kr/archives/233

 

 

 

 

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
226 [C/C++][tensorflow 1.x] windows C lib : [Tensorflow] How to Install Tensorflow for C API file 졸리운_곰 2021.11.19 0
225 [C/C++][tensorflow] tensorflovw 1.x version 텐서플로우 C 예제 file 졸리운_곰 2021.11.19 1
224 [Visual Studio][boost c++] [C++] boost 설치 및 visual studio 설정 file 졸리운_곰 2021.11.18 0
223 [리눅스 마스터][linux, UNIX] 전설의 라인 에디트 Man page — ED 사용법 졸리운_곰 2021.11.18 0
» [리눅스 마스터][linux, UNIX] [편집][shell] ed (line editer) 사용예 졸리운_곰 2021.11.17 0
221 [C/C++][gnuplot][수학][MFC] Windows 환경의 C++ 언어에서 gnuplot을 사용한 그래프 출력 2 file 졸리운_곰 2021.11.12 0
220 [C/C++][gnuplot][수학][MFC] Windows 환경의 C++ 언어에서 gnuplot을 사용한 그래프 출력 file 졸리운_곰 2021.11.12 2
219 [C/C++ 인공지능][linux][cuda] flashlight file 졸리운_곰 2021.11.09 2
218 [C/C++] C++ Basic Input/Output 졸리운_곰 2021.11.06 4
217 [C/C++] Console Input/Output Functions in C file 졸리운_곰 2021.11.05 0
216 [C/C++ 프로그래밍] CMake 예제 졸리운_곰 2021.11.04 5
215 C/C++의 만년, 패키지 매니저 file 졸리운_곰 2021.11.04 2
214 [docker][도커] 로컬 개발환경 Docker 사용하기 file 졸리운_곰 2021.10.16 2
213 [unix][linux][compiler] Yacc와 Lex 시작하기 file 졸리운_곰 2021.09.08 2
212 [Docker][도커] docker 이미지 및 컨테이너 관리 명령어 정리 file 졸리운_곰 2021.08.29 5
211 [docker][도커] 컨테이너 시작, 중지, 재시작 졸리운_곰 2021.08.29 1
210 [Visual Studio 2019] Visual Studio로 Linux 원격 개발하기(Ubuntu 설치부터 SSH 서버접속까지) file 졸리운_곰 2021.08.29 4
209 [unix][emacs] 이맥스와 함께하는 개발환경 . emacs 튜토리얼 file 졸리운_곰 2021.08.18 6
208 [DOCKER] 도커_컨테이너 생성, 시작, 정지 file 졸리운_곰 2021.08.15 2
207 [쿠버네티스][Kubernetes] Helm 사용법 file 졸리운_곰 2021.07.19 4
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED