3. OS이야기/ 01. Administration

sed 사용하기

OSSW(Open Source System SoftWare 2014. 9. 30. 16:03

sed란?

sed는 stream editor를 줄인 말로, 비대화형 모드의 줄 단위 에디터이다. 표준 입력 또는 파일로부터 텍스트를 입력받아 주어진 라인(행)들에 대해 한 번에 한 라인씩 어떤 처리를 한 다음, 그 결과를 표준 출력이나 파일로 보낸다.

sed는 주어진 주소 범위에 대해 입력의 어떤 줄을 처리할 것인지 결정한다.

 

sed 편집기는 적용된 내용을 출력 할 뿐 원본파일을 손상시키지 않는다. 리다이렉션을 이용하여 편집 결과를 파일로 저장하여 확인할 수 있다.  

 

연산자 

이름 

설명 

 예제

[주소범위]/p

print

[주어진 주소범위]를 출력

#sed '1,5p' test.txt

=>test.txt 파일의 1부터 5행까지 출력

[주소범위]/d

delete

[주어진 주소범위]를 삭제

#sed '6d' test.txt 

=>test.txt에서 6번째 행을 삭제

[pattern]/d 

delete 

[pattern]을 포함한 행을 삭제

#sed '/abc/d' test.txt

=>test.txt에서 abc가 포함된 행을 삭제 

s/[pattern1]/[pattern2]/

substitute  

한 라인에서 처음 나타나는 [pattern1]을 [pattern2]로 치환

#sed  's/abc/xyz/' test.txt

=>test.txt에서 abc 문자를 xyz로 치환

 

sed 사용에 유용한 정규표현식 

메타문자 

의미

예제 

설명

 ^

행의 처음 

/^hello/ 

hello로 시작하는 행

 $

행의 끝 

/hello$/ 

hello로 끝나는 행 

 .

하나의 문자와 대응 

/h...o/ 

h다음에 세 글자 오고 o로 끝나는 문자열을 포함하는 행 

 *

0개 혹은 임의의 갯수

/*hello/ 

0개 혹은 임의 갯수의 공백 문자 후에 hello로 끝나는 문자열을 포함하는 행 

 []

[]사이의 문자 집합중 하나와 대응 

/[Hh]ello/ 

Hello 또는 hello를 포함한 행 

 [^]

문자 집합에 속하지 않는 한 문자와 대응 

/[^a-g]ello/ 

a와g 사이의 범위에 포함되지 않는 한 문자와 ello가 붙어있는 문자열 

 

posted by 김소령