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