찾기
내용으로 건너뛰기
추적
문서의 이전 판을 선택했습니다!
저장하면 이 자료로 새 판을 만듭니다.
미디어 파일
{{tag>sed 우분투 리눅스 명령어 편집기 명령행}} ====== SED (스팀라인드 에디터; streamlined editor) ====== sed는 입력-작업-출력 방식으로 작동되는 대화형 기능이 없는 편집기이다. 명령행에서 직접 편집 명령어와 파일을 지정하여 작업한 후 결과를 화면으로 확인한다. sed 편집기는 원본을 손상하지 않는다. 리다이렉션을 이용하여 편집 결과를 파일로 저장하여 확인할 수 있다. =====사용법===== ==== 주소 지정==== 주소 지정이란 편집하고자 하는 행을 선택하는 것을 말한다. 이 주소는 숫자나 정규표현식 또는 둘의 조합으로 표현한다. 주소를 지정하지 않은 경우 입력 파일 전체 행에 대하여 작업을 진행한다. sed '1,3p' datafile : datafile의 1행에서 3행까지 출력한다. p는 행을 출력하라는 명령어이다. sed -n '/[Ll]ove/p' datafile : datafile에서 Love나 love를 포함하는 행만 출력한다. ==== 명령어와 옵션==== === 명령어=== | a\ | 현재 행에 하나 이상의 새로운 행을 추가한다. | | c\ | 현재 행의 내용을 새로운 내용으로 바꾼다. | | i\ | 현재 행의 위에 삽입한다. | | d | 행을 삭제한다. | | l | 출력되지 않는 특수문자를 출력한다. | | p | 행을 출력한다. | | n | 다음 입력 행을 첫 번째 명령어가 아닌 다음 명령어에서 처리하게 한다. | | q | sed를 종료한다. | | r | 파일로부터 행을 읽어온다. | | ! | 선택된 행을 제외한 나머지 전체 행에 명령어를 적용한다. | | s | 문자열을 치환한다. | | /g | 한줄에 대상문자가 여러개일 때도 처리하도록 한다. | === 옵션=== |-e | 다중 편집시 사용.| |-f | sed 스크립트 파일 지정에 사용.| |-n | 전체 출력을 생략하고, 패턴이 일치하는 줄만 출력하도록 한다.| |-i | 편집결과를 반영하여 원본파일을 수정한다. (백업필수!) | 다중명령어를 사용하거나 주소 지정이 다른 주소 지정 범위와 중첩되는 경우에는 명령어들을 중괄호안에 넣고, 각 명령어의 끝에 세미콜론을 붙인다. !는 명령어를 반전하는데 사용한다. 다음 예는 love를 포함하지 않은 행들을 삭제한다. sed '/love/!d' datafile ==== 메타문자==== : grep 등과 마찬가지로 sed는 패턴검색을 위하여 특별한 메타문자를 제공한다. ^ : 행의 시작 지시자 ex) /^love/ : love로 시작하는 행 $ : 행의 끝 지시자 ex) /love$/ : love로 끝나는 행 . : 하나의 문자와 대응 ex) /l..e/ : l 다음에 두 글자가 오고 e로 끝나는 문자열을 포함하는 행 * : 0개 혹은 임의의 임의 갯수 * ex) / *love/ : 0개 혹은 임의 갯수의 공백 문자 후에 love로 끝나는 문자열을 포함한 행 [] : [] 사이의 문자 집합중 하나와 대응 ex) /[Ll]ove/ : Love 또는 love를 포함한 행 [^] : 문자 집합에 속하지 않는 한 문자와 대응 ex) /[^A-K]ove/ : A 와 K 사이의 범위에 포함되지 않는 한 문자와 ove가 붙어있는 문자열 \(..\) : 태그로 저장할 수 있는 문자열 지정에 사용. ex) s/\(lov\)able/\1er/ : 지정된 부분(lov)을 태그 1에 저장하였다가 사용한다. 태그를 참조하기 위해서는 \1을 사용한다. 태그는 9개까지 사용할 수 있다. 예제에서 lovable이 lover로 치환된다. & : 검색열을 저장하여 치환열에서 사용할 수 있게한다. ex) s/love/**&**/ : 검색열 love가 **love**로 치환된다. \< : 단어의 시작 지시자 ex) /\<love/ : love로 시작하는 단어를 포함하는 행 \> : 단어의 끝 지시자 ex) /love\>/ : love로 끝나는 단어를 포함하는 행 x\{m\} : 문자 x를 m번 반복한다. ex) /a\{5\}/ : a가 5번 반복 x\{m,\} : 적어도 m번 반복한다. ex) /a\{5,\}/ : a가 적어도 5번 반복 x\{m,n\} : m회 이상 n회 이하 반복한다. ex) /a\{5,10\}/ : a가 5회에서 10회 사이로 반복 =====예제===== ====찾기 ==== sed -n '/love/p' datafile : 기본 설정에 의한 p 명령어의 동작을 제한한다. -n 옵션을 사용하면 love 패턴을 포함하는 행들만 출력한다. sed '/love/p' datafile : 기본 설정에서는 모든 행을 표준 출력으로 내보낸다. 패턴 love가 있는 행을 찾으면 그 행을 한 번 더 출력한다. ==== 삭제 : d==== sed '3d' datafile : 3번 행을 삭제한다. 다른 행들은 기본적으로 한번 출력된다. sed '3,$d' datafile : 3번 행부터 마지막 행까지 삭제한다. 그리고 나머지 행들이 출력된다. sed '$d' datafile : 마지막 행을 삭제한다. 삭제된 행 이외의 모든 행들이 출력된다. sed '/love/d' datafile : love를 포함한 모든 행을 삭제하고, 나머지 행들을 출력한다. ==== 치환 : s==== sed 's/love/peace/g' datafile : love를 peace로 치환한다. g플래그는 행 전체에 치환이 적용됨을 의미한다. g플래그가 없으면 행에서 맨 처음 등장하는 love만 peace로 치환된다. sed -n 's/^love/peace/p' datafile : -n 옵션은 p플래그와 같이 사용되어 치환이 일어난 행만 출력한다. sed 's/[0-9][0-9]$/&.5/' datafile : &는 검색열에서 지정한 문자열을 대신한다. 즉 두자리 숫자로 끝나는 행은 그 숫자들에 .5가 추가된다. sed -n 's/love/peace/gp' datafile : love가 peace로 치환된 행들만 출력한다. -n 옵션이 p 명령어와 함께 사용되어 출력을 간단하게 줄여준다. g플래그는 각 행에서 전체 치환이 일어나게 한다. sed 's#3#99#g' datafile : s 명령어 바로 다음에 오는 문자는 검색열과 치환열을 구분해주는 구분자이다. 기본적으로 /를 구분자로 사용하지만, 다른 문자로 바꾸어 쓸 수 있다. 이는 / 자체를 포함하는 문자열을 검색할 때 유용하다. ==== 행의 선택 범위 : 쉼표(,)==== sed -n '/love/,/peace/p' datafile : love가 나오는 행과 peace가 나오는 행 사이의 모든 행들이 출력된다. love가 peace 다음에 나오면 love가 나오는 행부터 마지막 행까지 출력된다. sed -n '5,/^love/p' datafile : 5번째 행부터 love로 시작하는 행까지 출력한다. ==== 다중 편집 : e==== sed -e '1,3d' -e 's/love/peace/' datafile : 첫 번째 명령은 1행부터 3행까지 삭제하고, 두 번째 명령은 love를 peace로 치환하는 것이다. ==== 파일로 부터 읽기 : r==== sed '/love/r newfile' datafile : newfile의 내용을 읽어 datafile의 패턴 love를 찾은 곳에 삽입한다. 패턴이 여러번 나오면 매번 중복해서 출력된다. ====파일로 쓰기 : w==== sed -n '/love/w newfile' datafile : love를 포함하는 행들이 newfile에 저장된다. ====붙이기 : a==== sed '/^love /a\ -----' datafile : 패턴 love로 시작하고 공백문자가 있는 행 다음에 명령어 a\뒤의 문자열을 추가한다. ==== 삽입 : i==== sed '/love/i\ -----' datafile : 패턴 love를 찾은 후 명령어 i\ 다음에 오는 텍스트를 love가 포함된 행 위에 삽입한다. sed -i '1 i\#문서시작' test.txt : test.txt 문서의 처음에 문자열 삽입. ====종료 : q==== sed '5q' datafile : 5행까지 출력한 후 sed프로그램 종료한다. sed '/love/{ s/love/peace/;q; }' datafile : 패턴 love를 찾은 행에서 love가 peace로 치환되고 q 명령어로 sed 종료한다. 다중명령어 처리시 중괄호를 사용하며, 이때 각 명령어의 끝에 세미콜론을 붙인다. ====다중 파일에서 찾아 바꾸기==== sed -i 's/old-word/new-word/g' *.txt s/ 찾아 바꾼다는 명령어... abc를 찾아 123 으로 바꾼다. /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 =====참고===== * https://wiki.kldp.org/HOWTO/html/Adv-Bash-Scr-HOWTO/x12718.html * https://www.linux.co.kr/home/lecture/?leccode=10863
2+1?
이 필드는 비어 있도록 유지하세요:
저장
미리 보기
취소
편집 요약
참고: 이 문서를 편집하면 내용은 다음 라이선스에 따라 배포하는 데 동의하는 것으로 간주합니다:
CC Attribution-Noncommercial-Share Alike 4.0 International
연결문서
기술
우분투 저장소 변경하기(Ubuntu Daumkakao Repository)
문서 도구
문서 보기
이전 판
연결문서
맨 위로
다크 모드로 보기
☀️
Toggle Menu
기술
너두 고쳐두 됩니다.
사이트 도구
최근 바뀜
미디어 관리자
사이트맵
사용자 도구
등록
로긴
최근 수정된 문서
timed_intercourse
[매일?]
ovulation_induction
menopause
[검사]
male_factor
[Male Factor]
infertility
ivf
[시술과정]
amh
prolactin
putty
venv
[macOS / Linux (bash/zsh 등)]
postgresql
bitvise_ssh_client
screen
허니미
만듦
고위험_산모
the_siren_s_deception
[그웨덴 농장]
wegovy
[운동 루틴 (주 4~5회 권장)]