[출처] 간단하지만 강력한 파일 편집기 'sed'|작성자 신바람형제들

1. sed란 무엇인가?

 


sed는 비 대화형 모드의 줄 단위 편집기라고 합니다. 

vi 편집기처럼 직접 파일을 열어 고치지 않고 커맨드 창 또는 스크립트에서 동작을 하여 원하는 부분만 변경해준다는 특징이 있습니다.


2. sed의 특징


sed는 쉘 또는 스크립트에서 파이프(|)와 같이 사용될 수 있는 명령어입니다.

그리고 기본적으로 정규표현식이 사용가능하기 때문에 정규표현식을 알면 더 고급지게 sed를 이용할 수 있습니다.

주의할 점은 정규표현식을 사용하기 때문에 특수문자 앞에 역 슬래시(\,\)를 붙여주어야 합니다. \를 쓰면 리눅스에서는 역슬래시로 받아들입니다.

예) sed 's/\$man/man/g' test.txt


3. sed 옵션


옵션은 sed -e 의 형식으로 사용됩니다.


e: sed를 사용하였을 때 출력되는 값을 보여줍니다. 이 옵션은 기본값으로 굳이 안 써도 되지만 다중 명령어를 쓸 때는 반드시 써야 합니다.
예) sed /man/p -e /girl/p 파일명: man과 girl이 들어있는 줄을 한번 더 출력


i: 변경되는 값을 실제로 파일에 저장하는 옵션입니다. 이 옵션은 출력되는 값이 없이 바로 실제 파일에 적용되는 것이 특징입니다.


n: 특정 값이 들어간 줄만 출력해주는 기능입니다. 주로 p 명령어와 사용된다고 합니다.


f: 스크립트를 파일로부터 읽어들이며 명령어를 지정하는 명령어라고 하는데 저는 거의 사용하지 않습니다.


4. sed 명령어


d: 줄 삭제 명령어

a\: 해당 값이 있는 줄 다음에 입력. 그냥 밑에 줄 하나 삽입되는 정도로 알고 있으면 됩니다.

i\: 줄 앞에 첨가 명령어

c\: 해당 줄을 변경하는 명령어

g: 한 줄에 해당하는 값이 여러개 있을 경우에 모두 변경하는 명령어. 이 명령어를 해당 줄의 제일 앞에 내용만 변경됩니다.

p: 조건에 부합하는 라인을 출력하는 명령어

s/orgin/change/: 앞에 것을 뒤에 것으로 변경하는 명령어


5. sed 사용방법


기본적으로 p,d,s 옵션들을 가장 많이 사용한다고 알려져있습니다. 

세가지만 예시로 들겠습니다.

궁금하신 부분은 댓글로 남겨주세요~!


기능: 출력

sed p 파일명: 파일 전체 출력 (cat과 같은 기능)

sed 3p 파일명: 3번째 줄 한번 더 출력

sed 3,4p 파일명: 3,4번째 줄 한번 더 출력

sed /man/p 파일명: man이 포함된 줄 한번 더 출력

sed -n 3p 파일명: 3번째 줄만 출력(n이 붙으면 조건에 해당하는 줄만 출력됨)


기능: 삭제

sed 3d 파일명: 3번째 줄 삭제하고 나머지 줄 출력

sed /man/d 파일명: man이 포함된 줄 삭제 나머지 줄 출력


s

기능: 치환

sed 's/man/girl/g' 파일명: man을 girl로 치환

sed -n 's/man/girl/p' 파일명: man을 girl로 치환하고 치환된 줄을 출력


6. 조금 더 유용한 sed 이용방법


공백 줄 제거하기

sed '/^$/d' 파일명


모든 줄마다 공백을 추가하기

sed 'a\\' 파일명


주석이 처리된 줄 모두 삭제

sed '/^#/d' 파일명


이 외에 리눅스 세팅 시에 스크립트에 등록하여 특정 줄을 추가하는 등의 역할을 수행하게 할 수도 있습니다.

sed -i "/HISTSIZE=1000/a\HISTTIMEFORMAT='%F %T ---'" /etc/profile 

위의 사용방법은 history 결과값에 날짜와 시간을 표현하게 해주는 방법입니다.


sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

혹은 selinux를 자동으로 꺼주는 스크립트를 만들 수도 있구요.


잘 쓰면 정말 유용하게 사용할 수 있는 sed, 간과하지 말고 자주자주 사용하도록 합시다~!

 

+ Recent posts