본문 바로가기
Linux/Shell Script

sed 명령어

by Luuii 2017. 10. 15.

1. 파일(또는 입력)을 한번에 한 행씩 처리.

 

2. 임시 버퍼 안에서 각 행을 저장하고 편집하는 과정 중에 원본 파일은 절대 변경되지 않음.

 

3. $는 입력 파일의 맨 마지막 행을 표현.

 

4. 두 행 번호를 쉼표(,)로 구분해주면, 두 번호 사이의 행들에 대해 작업이 진행.

 

5. 출력, 삭제, 변경

 

6. 주소 지정을 생략하면 입력으로 들어오는 모든 행들을 처리.

 

 

 

 

7. 다중 명령어를 사용해야 하거나 주소 지정이 다른 주소 지정 범위와 중첩되는 경우에는 명령어들을 중괄호 안에 넣고, 각 명령어들을 다른 행에 입력하거나 다른 행에 입력하거나 명령어 끝에 세미콜론을 붙여야 함.

 

8. 느낌표(!)는 명령어 반전.

 

9. 구문에러는 표준에러로 보낸다. 성공하면 0. 실패하면 1

 

 

10. 기본 설정에서는 모든 행을 표준 출력으로 내보냄. -n 옵션은 기본 설정에 의한 p 명령어의 동작을 제한.

-n을 포함할 경우 그 패턴을 포함하는 줄만 출력.

 

11. sed -n 's/^west/north/p' datafile    -> -n 옵션에는 p플래그와 함께 사용되어 치환이 일어난 행만 출력함.

 

12. 치환열에 있는 엠퍼샌드(&)는 검색열에서 지정한 문자열을 대신한다. 치환열에서는 \&로 사용.

 

13. sed '/west/,/east/s/$/**VACA**/' datafile    -> west가 나오는 행과 east가 나오는 행 사이의 모든 행의 마지막을 의미하는 달러기호($)가 **VACA**로 치환.

 

14. sed -e '1,3d' -e 's/Hemenway/Jones/' datafile    -> 다중 편집. e명령어

 

15. sed '/Suan/r newfile' datafile    -> r 명령어는 파일로부터 사용자가 지정한 행을 읽어옴. newfile의 내용은 datafile에서 패턴 Suan을 찾은 곳에 삽입됨. Suan이 한 행에 두 번 이상 나오면, newfile의 내용이 매 검색시마다 중복해서 출력됨.

> datafile에서 Suan 찾아서 그 자리에 newfile 내용 집어넣어라.

 

16. sed -n '/north/w newfile' datafile    -> w 명령어는 사용자가 선택한 행들을 파일에 저장.

> datafile에서 north를 포함하는 행을 newfile에 저장해라.

 

17. sed '/^north /a--->THE NORTH SALES DISTRICT HAS MOVED<---' datafile    -> a 명령어는 내용을 덧붙일 때 사용.

 

18. sed '/eastern/iNEW ENGLAND REGION============' datafile    -> i 명령어는 삽입명령어.

 

19. sed '1,3y/abcdefghijklmnopqrstuvxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' datafile    -> 11행에서 행까지의 소문자를 모두 대문자로 바꾼다.

명령어에서는 정규표현식 메타문자가 작동하지 않는다.

 

20. sed -e '/WE/{ h; d; }' -e '/CT/{ G; }' datafile

 

 

21. sed -e '/Patricia/h' -e '/Margot/x' datafile    -> x 명령어는 홀드 스페이스의 내용과 현재 패턴 스페이스의 내용을 서로 교환해줌.

> Patricia를 찾아 홀드 스페이스에 저장하고 다시 Margot을 검색하여 결과행이 패턴 스페이스에 입력되면 홀드와 패턴 내용을 교환.

 

 

 

 

 

 

참고도서 : Unix Shell Bible

반응형

'Linux > Shell Script' 카테고리의 다른 글

awk 명령어  (0) 2017.10.15
잘 작성된 쉘 스크립트 예제들  (0) 2017.10.13
UID 번호 0번인 것들만 색출하는 스크립트  (0) 2017.10.13
파일이름 자동변경 스크립트  (0) 2017.10.13
원격 관련 스크립트  (0) 2017.10.13