차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
tech:sed [2015/02/25 00:26] V_Ltech:sed [2022/12/02 03:52] (현재) – [삭제 : d] 61.74.132.138
줄 1: 줄 1:
-====== SED (streamlined editor) ======+{{tag>sed 우분투 리눅스 명령어 편집기 명령행}} 
 +====== SED (스팀라인드 에디터; streamlined editor) ======
 sed는 입력-작업-출력 방식으로 작동되는 대화형 기능이 없는 편집기이다. 명령행에서 직접 편집 명령어와 파일을 지정하여 작업한 후 결과를 화면으로 확인한다. sed 편집기는 원본을 손상하지 않는다. 리다이렉션을 이용하여 편집 결과를 파일로 저장하여 확인할 수 있다. sed는 입력-작업-출력 방식으로 작동되는 대화형 기능이 없는 편집기이다. 명령행에서 직접 편집 명령어와 파일을 지정하여 작업한 후 결과를 화면으로 확인한다. sed 편집기는 원본을 손상하지 않는다. 리다이렉션을 이용하여 편집 결과를 파일로 저장하여 확인할 수 있다.
  
  
 +=====사용법=====
  
 ==== 주소 지정==== ==== 주소 지정====
 주소 지정이란 편집하고자 하는 행을 선택하는 것을 말한다. 이 주소는 숫자나 정규표현식 또는 둘의 조합으로 표현한다. 주소를 지정하지 않은 경우 입력 파일 전체 행에 대하여 작업을 진행한다. 주소 지정이란 편집하고자 하는 행을 선택하는 것을 말한다. 이 주소는 숫자나 정규표현식 또는 둘의 조합으로 표현한다. 주소를 지정하지 않은 경우 입력 파일 전체 행에 대하여 작업을 진행한다.
-  sed 1,3p’ datafile+  sed '1,3pdatafile
 : datafile의 1행에서 3행까지 출력한다. p는 행을 출력하라는 명령어이다. : datafile의 1행에서 3행까지 출력한다. p는 행을 출력하라는 명령어이다.
  
-  sed -n /[Ll]ove/p’ datafile+  sed -n '/[Ll]ove/pdatafile
 : datafile에서 Love나 love를 포함하는 행만 출력한다. : datafile에서 Love나 love를 포함하는 행만 출력한다.
  
줄 16: 줄 17:
 ==== 명령어와 옵션==== ==== 명령어와 옵션====
 === 명령어=== === 명령어===
-|a\| 현재 행에 하나 이상의 새로운 행을 추가한다.| +| a\  | 현재 행에 하나 이상의 새로운 행을 추가한다.                
-|c\| 현재 행의 내용을 새로운 내용으로 바꾼다.| +| c\  | 현재 행의 내용을 새로운 내용으로 바꾼다.                  
-|i\| 현재 행의 위에 삽입한다.| +| i\  | 현재 행의 위에 삽입한다.                           
-|d |행을 삭제한다.| +| d   | 행을 삭제한다.                                 
-|l |출력되지 않는 특수문자를 출력한다.| +| l   | 출력되지 않는 특수문자를 출력한다.                      
-|p |행을 출력한다.| +| p   | 행을 출력한다.                                 
-|n |다음 입력 행을 첫 번째 명령어가 아닌 다음 명령어에서 처리하게 한다.| +| n   | 다음 입력 행을 첫 번째 명령어가 아닌 다음 명령어에서 처리하게 한다.  
-|q |sed를 종료한다.| +| q   | sed를 종료한다.                               
-|r |파일로부터 행을 읽어온다.| +| r   | 파일로부터 행을 읽어온다.                           
-|! |선택된 행을 제외한 나머지 전체 행에 명령어를 적용한다.| +| !   | 선택된 행을 제외한 나머지 전체 행에 명령어를 적용한다.          
-|s |문자열을 치환한다.| +| s   | 문자열을 치환한다.                               
-| /g  한줄에 대상문자가 여러개일 때도 처리하도록 한다.|+| /g  한줄에 대상문자가 여러개일 때도 처리하도록 한다.              |
  
 === 옵션=== === 옵션===
줄 39: 줄 40:
 !는 명령어를 반전하는데 사용한다. 다음 예는 love를 포함하지 않은 행들을 삭제한다. !는 명령어를 반전하는데 사용한다. 다음 예는 love를 포함하지 않은 행들을 삭제한다.
  
-  sed /love/!d’ datafile+  sed '/love/!ddatafile
  
 ==== 메타문자==== ==== 메타문자====
줄 99: 줄 100:
  
 =====예제===== =====예제=====
-====출력 : p====+====찾기 ====
  
-  sed /love/p’ datafile+  sed '/love/p' *.txt
 : 기본 설정에서는 모든 행을 표준 출력으로 내보낸다. 패턴 love가 있는 행을 찾으면 그 행을 한 번 더 출력한다. : 기본 설정에서는 모든 행을 표준 출력으로 내보낸다. 패턴 love가 있는 행을 찾으면 그 행을 한 번 더 출력한다.
  
-  sed -n /love/p’ datafile+  sed -n '/love/p' *.txt
 : 기본 설정에 의한 p 명령어의 동작을 제한한다. -n 옵션을 사용하면 love 패턴을 포함하는 행들만 출력한다. : 기본 설정에 의한 p 명령어의 동작을 제한한다. -n 옵션을 사용하면 love 패턴을 포함하는 행들만 출력한다.
  
  
 ==== 삭제 : d==== ==== 삭제 : d====
-  sed 3d’ datafile+ 
 + 
 +  sed '/love/d' datafile 
 +: love를 포함하는 모든 행을 삭제하고, 나머지 행들을 출력한다. 
 + 
 +  sed '3ddatafile
 : 3번 행을 삭제한다. 다른 행들은 기본적으로 한번 출력된다. : 3번 행을 삭제한다. 다른 행들은 기본적으로 한번 출력된다.
  
-  sed 3,$d’ datafile+  sed '3,$ddatafile
 : 3번 행부터 마지막 행까지 삭제한다. 그리고 나머지 행들이 출력된다. : 3번 행부터 마지막 행까지 삭제한다. 그리고 나머지 행들이 출력된다.
  
-  sed $d’ datafile+  sed '$ddatafile
 : 마지막 행을 삭제한다. 삭제된 행 이외의 모든 행들이 출력된다. : 마지막 행을 삭제한다. 삭제된 행 이외의 모든 행들이 출력된다.
- 
-  sed ‘/love/d’ datafile 
-: love를 포함한 모든 행을 삭제하고, 나머지 행들을 출력한다. 
- 
  
 ==== 치환 : s==== ==== 치환 : s====
-  sed s/love/peace/g’ datafile+  sed 's/love/peace/gdatafile
 : love를 peace로 치환한다. g플래그는 행 전체에 치환이 적용됨을 의미한다. g플래그가 없으면 행에서 맨 처음 등장하는 love만 peace로 치환된다. : love를 peace로 치환한다. g플래그는 행 전체에 치환이 적용됨을 의미한다. g플래그가 없으면 행에서 맨 처음 등장하는 love만 peace로 치환된다.
  
-  sed -n s/^love/peace/p’ datafile+  sed -n 's/^love/peace/pdatafile
 : -n 옵션은 p플래그와 같이 사용되어 치환이 일어난 행만 출력한다. : -n 옵션은 p플래그와 같이 사용되어 치환이 일어난 행만 출력한다.
  
-  sed s/[0-9][0-9]$/&.5/’ datafile+  sed 's/[0-9][0-9]$/&.5/datafile
 : &는 검색열에서 지정한 문자열을 대신한다. 즉 두자리 숫자로 끝나는 행은 그 숫자들에 .5가 추가된다. : &는 검색열에서 지정한 문자열을 대신한다. 즉 두자리 숫자로 끝나는 행은 그 숫자들에 .5가 추가된다.
  
-  sed -n s/love/peace/gp’ datafile+  sed -n 's/love/peace/gpdatafile
 : love가 peace로 치환된 행들만 출력한다. -n 옵션이 p 명령어와 함께 사용되어 출력을 간단하게 줄여준다. g플래그는 각 행에서 전체 치환이 일어나게 한다. : love가 peace로 치환된 행들만 출력한다. -n 옵션이 p 명령어와 함께 사용되어 출력을 간단하게 줄여준다. g플래그는 각 행에서 전체 치환이 일어나게 한다.
  
-  sed s#3#99#g’ datafile+  sed 's#3#99#gdatafile
 : s 명령어 바로 다음에 오는 문자는 검색열과 치환열을 구분해주는 구분자이다. 기본적으로 /를 구분자로 사용하지만, 다른 문자로 바꾸어 쓸 수 있다. 이는 / 자체를 포함하는 문자열을 검색할 때 유용하다. : s 명령어 바로 다음에 오는 문자는 검색열과 치환열을 구분해주는 구분자이다. 기본적으로 /를 구분자로 사용하지만, 다른 문자로 바꾸어 쓸 수 있다. 이는 / 자체를 포함하는 문자열을 검색할 때 유용하다.
  
 ==== 행의 선택 범위 : 쉼표(,)==== ==== 행의 선택 범위 : 쉼표(,)====
-  sed -n /love/,/peace/p’ datafile+  sed -n '/love/,/peace/pdatafile
 : love가 나오는 행과 peace가 나오는 행 사이의 모든 행들이 출력된다. love가 peace 다음에 나오면 love가 나오는 행부터 마지막 행까지 출력된다. : love가 나오는 행과 peace가 나오는 행 사이의 모든 행들이 출력된다. love가 peace 다음에 나오면 love가 나오는 행부터 마지막 행까지 출력된다.
  
-  sed -n 5,/^love/p’ datafile+  sed -n '5,/^love/pdatafile
 : 5번째 행부터 love로 시작하는 행까지 출력한다. : 5번째 행부터 love로 시작하는 행까지 출력한다.
  
  
 ==== 다중 편집 : e==== ==== 다중 편집 : e====
-  sed -e 1,3d’ -e s/love/peace/’ datafile+  sed -e '1,3d-e 's/love/peace/datafile
 : 첫 번째 명령은 1행부터 3행까지 삭제하고, 두 번째 명령은 love를 peace로 치환하는 것이다. : 첫 번째 명령은 1행부터 3행까지 삭제하고, 두 번째 명령은 love를 peace로 치환하는 것이다.
  
  
 ==== 파일로 부터 읽기 : r==== ==== 파일로 부터 읽기 : r====
-  sed /love/r newfile’ datafile+  sed '/love/r newfiledatafile
 : newfile의 내용을 읽어 datafile의 패턴 love를 찾은 곳에 삽입한다. 패턴이 여러번 나오면 매번 중복해서 출력된다. : newfile의 내용을 읽어 datafile의 패턴 love를 찾은 곳에 삽입한다. 패턴이 여러번 나오면 매번 중복해서 출력된다.
  
  
 ====파일로 쓰기 : w==== ====파일로 쓰기 : w====
-sed -n /love/w newfile’ datafile+sed -n '/love/w newfiledatafile
 : love를 포함하는 행들이 newfile에 저장된다. : love를 포함하는 행들이 newfile에 저장된다.
  
  
 ====붙이기 : a==== ====붙이기 : a====
-  sed /^love /a\ -----’ datafile+  sed '/^love /a\ -----datafile
 : 패턴 love로 시작하고 공백문자가 있는 행 다음에 명령어 a\뒤의 문자열을 추가한다. : 패턴 love로 시작하고 공백문자가 있는 행 다음에 명령어 a\뒤의 문자열을 추가한다.
  
  
 ==== 삽입 : i==== ==== 삽입 : i====
-  sed /love/i\ -----’ datafile+  sed '/love/i\ -----datafile
 : 패턴 love를 찾은 후 명령어 i\ 다음에 오는 텍스트를 love가 포함된 행 위에 삽입한다. : 패턴 love를 찾은 후 명령어 i\ 다음에 오는 텍스트를 love가 포함된 행 위에 삽입한다.
  
 +  sed -i '1 i\#문서시작' test.txt 
 +: test.txt 문서의 처음에 문자열 삽입.
 ====종료 : q==== ====종료 : q====
-  sed 5q’ datafile+  sed '5qdatafile
 : 5행까지 출력한 후 sed프로그램 종료한다. : 5행까지 출력한 후 sed프로그램 종료한다.
  
-  sed /love/{ s/love/peace/;q; }’ datafile+  sed '/love/{ s/love/peace/;q; }datafile
 : 패턴 love를 찾은 행에서 love가 peace로 치환되고 q 명령어로 sed 종료한다. : 패턴 love를 찾은 행에서 love가 peace로 치환되고 q 명령어로 sed 종료한다.
 다중명령어 처리시 중괄호를 사용하며, 이때 각 명령어의 끝에 세미콜론을 붙인다. 다중명령어 처리시 중괄호를 사용하며, 이때 각 명령어의 끝에 세미콜론을 붙인다.
  
-====다중 파일에서 찾아 바꾸기.====+====다중 파일에서 찾아 바꾸기====
  
  
줄 187: 줄 190:
   abc를 찾아 123 으로 바꾼다.   abc를 찾아 123 으로 바꾼다.
   /g  한줄에 대상문자가 여러개일 때도 처리하도록 한다. (global을 의미)   /g  한줄에 대상문자가 여러개일 때도 처리하도록 한다. (global을 의미)
-     
  
 +  sed -i 's\{{page>틀:\{{page>:틀#\g' *.txt
 +
 +
 +====파일 목록에서====
 +
 +  xargs sed -i 's/bc01/xy01/g' <file_list.log
 +
 +  xargs sed -i 's\{{tag>\{{tag>물약효과 \g' < list.log
  
 =====참고===== =====참고=====
줄 196: 줄 206:
  
  
-{{tag>sed 우분투 리눅스 명령어}}+