[리눅스 마스터][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 )

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

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

 

 

 

 

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
234 [C/C++ 에서 다른 언어간 연계/호출] Making C++ Talk to Other Languages with SWIG file 졸리운_곰 2022.07.18 186
233 [C 프로그래밍] 파일 출력 함수_3.연결 리스트 저장, 불러오기 졸리운_곰 2022.06.17 129
232 [UBUNTU] 우분투 20.04 USB 스틱에 설치 How to Install Ubuntu on a USB Flash Drive file 졸리운_곰 2022.06.02 241
231 [인공지능] 추론 기법 file 졸리운_곰 2022.05.05 232
230 [C/C++] Modern C++ micro-service implementation + REST API file 졸리운_곰 2022.04.15 86
229 [C++ 인공지능] C ++을 이용한 단순 MLP 역 전파 인공 신경망 (단계 별) file 졸리운_곰 2022.04.11 212
228 [linux mater] Linux passwd : 인증 토큰 수정 오류 졸리운_곰 2022.03.04 117
227 [C/C++인공지능] An Introduction to Machine Learning Libraries for C++ file 졸리운_곰 2021.12.06 164
226 [C/C++][tensorflow 1.x] windows C lib : [Tensorflow] How to Install Tensorflow for C API file 졸리운_곰 2021.11.19 148
225 [C/C++][tensorflow] tensorflovw 1.x version 텐서플로우 C 예제 file 졸리운_곰 2021.11.19 313
224 [Visual Studio][boost c++] [C++] boost 설치 및 visual studio 설정 file 졸리운_곰 2021.11.18 160
223 [리눅스 마스터][linux, UNIX] 전설의 라인 에디트 Man page — ED 사용법 졸리운_곰 2021.11.18 118
» [리눅스 마스터][linux, UNIX] [편집][shell] ed (line editer) 사용예 졸리운_곰 2021.11.17 131
221 [C/C++][gnuplot][수학][MFC] Windows 환경의 C++ 언어에서 gnuplot을 사용한 그래프 출력 2 file 졸리운_곰 2021.11.12 526
220 [C/C++][gnuplot][수학][MFC] Windows 환경의 C++ 언어에서 gnuplot을 사용한 그래프 출력 file 졸리운_곰 2021.11.12 1465
219 [C/C++ 인공지능][linux][cuda] flashlight file 졸리운_곰 2021.11.09 215
218 [C/C++] C++ Basic Input/Output 졸리운_곰 2021.11.06 168
217 [C/C++] Console Input/Output Functions in C file 졸리운_곰 2021.11.05 153
216 [C/C++ 프로그래밍] CMake 예제 졸리운_곰 2021.11.04 111
215 C/C++의 만년, 패키지 매니저 file 졸리운_곰 2021.11.04 122
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED