0367. [sed] sed 사용법
명령어 사용법 sed ‘s/old/new/’ myfile (여기서 마지막 / 를 빼먹지 않도록 한다) somecommad | sed ‘s/old/new/’ | othercommand (마지막 /g 가 없으면 해당 줄의 첫번째 찾아지는 부분만 변경함) sed –e ‘s/old/new/’ –e ‘s/old2/new2/’ myfile sed ‘s/old/new/; s/old2/new2/’ myfile (; 은 절대 띄어 쓰기 하면 안된다)
Bourn 쉘의 다중라인 명령어 방법 $ sed ' > s/root/kim/ > ' ho
파일을 지정하여 명령어 사용 sed –f scriptfile myfile |
sed 사용하여 변경된 부분과 원본파일 비교하기 $ sed 's/root/kim/' ho | diff ho - 2c2 < root:x: --- > kim:x: |
sed 라인 지정 방법
sed 1d ho 첫번째 라인 지운다
콤마로 분리된 경우는 첫번째 라인 지정 부터 두번째 라인 지정까지 실행된다 sed ‘3,5d’ ho 3번줄 부터 5번 줄까지 지운다
$ sed '$d' ho 마지막 라인 지운다
sed ‘1,/^$/d’ ho 이 예는 1줄 부터 공백라인 까지 지운다. 두번째 공백라인 매치되지 않는다면 끝까지 지우게 될것이다.
정규표현식은 // 슬래시로 감사져 있다 /^$/d 빈 라인을 모두 지운다. [ec :/usr7/ec/kim]#sed '/^$/d' a1.out
! 가 라인지정 뒤에 따라오면 라인지정에 매치 되는 라인을 제외하고 해당 명령을 실행한다. $ sed '3,6!d' ho |
구분자는 보통 / 를 주로 사용하나 반드시 / 일 필요는 없다. 패턴이 경로면 일 경우는 구분자 패턴을 : 로 변경주면 된다 $ sed s:pig:kim: sedtest kim cow horse |
각 라인의 두번째 탭 문자를 뉴라인 문자로 대치. sed –f 로 읽어 들일 파일에 기술한다. $ cat sed1.file s/[tab]/\ /2
$ cat sedt1 Column1 Column2 Column3 Column4 $ sed -f sed1.file sedt1 Column1 Column2 Column3 Column4 sed 의 치환 명령중 특정라인의 여러 패턴 매치중에 특정 매치를 지정하도록 하는 숫자 플래그가 있다. |
중괄호{} 는 다중조건 실행시 사용한다. .TS 로 시작하여 .TE 로 끝나는 줄에서 kim 는 dany 로 바꾸고 .tmp 를 가진 라인은 삭제한다. /^\.TS/,/^\.TE/{ s/kim/dany/g /^\.tmp/d } |
c shell 의 경우는 해석할때 뒤에 백슬래시를 하나 지우기 때문에 스크립트 작성시 꼭 백슬래시를 2개 입력해야 한다. sed -e 's/foo/kim\\ dany/g' a1.out |
메타문자로써 & 는 패턴이 매치되는 부분을 가리킨다. s/unix/hi &/g 이면 sun unix 는 sun hi unix 로 변경된다. |
sed 로 A:B 인 내용을 B:A 로 치환할때 \1 \2 를 매개로 사용한다. [ec :/usr7/ec/kim]#cat a1.out first:second one:two [ec :/usr7/ec/kim]#sed 's/\(.*\):\(.*\)/\2:\1/' a1.out second:first two:one |
sed 'y/원본/바꿀문자/' file y는 원본문자를 바꿀문자로 전체에 걸처 적용한다. |
h H : 패턴공간을 대기공간으로 h 덮어쓰기 H 붙여쓰기 g G : 대기공간을 패턴공간으로 g 덮어쓰기 G 붙여쓰기 x : 대기공간과 패턴공간의 내용을 바꾼다. 라인일부분 변환하기, 한 라인에서 특정 패턴의 문자를 대문자로 출력하기 s/find the Match statiement/fine the MATCH statement/g #cat sedfile /the .* statement { h s/.*the \(.*\) statement.*/\1/ y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/ G s/\(.*\)\n\(.*the\).*\( statement.*\)/\2\1\3/ } |
-n : sed 는 라인이 패턴매치가 되지 않는 부분도 기본적으로는 다 출력을 한다. -n 옵션을 주면 라인매치가 되지 않는 부분은 출력하지 않는다 p : 라인매치 되는 부분 출력하기 q : 새 입력라인을 읽는 것을 멈추도록 한다. 출력도 멈추게 한다. [ec :/usr7/ec/kim]#sed '1,10p' a11.out 하면 1줄부터 10줄 까지만 출력되는 것이 아니라 11줄 부터 끝줄까지도 출력한다. [ec :/usr7/ec/kim]#sed -n '1,10p' a11.out 은 1줄 부터 10줄 까지만 출력한다. 11줄 부터 읽기는 하나 출력을 하지 않을 뿐이다. [ec :/usr7/ec/kim]#sed '10q' a11.out 은 1줄 부터 10줄 까지만 읽고 11줄부터는 아에 읽지도 않는다. |
sed 명령어 문법 정리 일반적인 형식 [address],[address][!] command [arguments]
a 지정된 라인뒤에 text 붙인다. [assress]a\ text
c 지정된 라인을 text 로 바꾼다. [address1],[address2]c\ text
[ec :/usr7/ec/kim]#cat a2 1 kim dany bloodmess73 korea kim 2 kim dany bloodmess73 korea kim 3 kim dany bloodmess73 korea kim 4 kim dany bloodmess73 korea kim 5 kim dany bloodmess73 korea kim 6 kim dany bloodmess73 korea kim 7 kim dany bloodmess73 korea kim
[ec :/usr7/ec/kim]#sed '3,6c\\ kim' a2 1 kim dany bloodmess73 korea kim 2 kim dany bloodmess73 korea kim kim 7 kim dany bloodmess73 korea kim
i 라인 앞에 삽입한다. [address]i\ text
q 라인을 만나면 끝낸다. [address]q
r 파일을 읽어 패턴 공간의 위에 붙인다. r 과 file 사이에 공백이 하나 있어야만 한다.
s 지정된 라인을 pattern 을 replacement 로 치환한다. [address1],[address2]s/pattern/replacement/flags flags 의 내용 n 지정된 라인중 n 번째 등장한 pattern 을 바꾼다 g 지정된 라인 모두를 바꾼다 p 성공적으로 대치가 이루어진 라인을 출력한다 w file 대치가 이루어지면 그 라인을 file 로 적는다. 한 스크립트에 대해 최대 10개의 파일을 열 수 있다.
t 지정된 라인에서 치환이 이루어졌는지 테스트 한다. [address1],[address2]t [label]
w 패턴 공간의 내용을 file에 붙인다. w 와 file 은 공백으로 분리된다 [address1],[address2]w file
y 문자들을 바꾼다 [address1],[address2]y/abc/xyz/ a는x 로 b는y, c는z 로 바꾼다 |
스크립트 안에서 변수를 사용하고자 할때는 변수 주위로 작은따옴표를 모두 둘러 쳐야 한다. sed '/'${username}'/{s/'${endver}'/'${curver}'/}' svn_milti.dat |
'IT' 카테고리의 다른 글
0369. [diff] diff 사용법 (0) | 2016.02.12 |
---|---|
0368. [ps] ps 사용법 (0) | 2016.02.12 |
0366. vmstat 각 항목별 상세설명 (0) | 2016.02.04 |
0365. lsof (list open file) 열려진 파일 보는 목록 (0) | 2016.02.04 |
0364. prod.rcv 실행파일 원복 스크립트 (0) | 2016.02.04 |