본문 바로가기
리눅스 관련 옵션 명령어

리눅스 sed-옵션

by 웹하는빡통 2019. 12. 14.

- p 명령 : 출력

  sed '/north/p' datafile

  -기본적으로 모든 줄을 출력하고, 패턴과 일치하는 줄을 한번 더 출력

  sed -n '/north/p' datafile

 

- d 명령 : 삭제

 

 

 

 

 

 

 

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' 파일명

[출처] 01. sed 옵션 정리|작성자 인트에스

'리눅스 관련 옵션 명령어' 카테고리의 다른 글

CentOS 버전별 명령어(service, chkconfig, 방화벽)  (0) 2019.12.14
test 명령어  (0) 2019.12.14
리눅스 cut명령어  (0) 2019.12.11
파일 비교  (0) 2019.12.05
쉘 스크립트 표준에러,입력/출력  (0) 2019.12.04

댓글