sed 명령어는, 파일 등을 각 라인별로 읽고 문자열 가공을 할 수 있게 해준다.

여기서 가공이란, 치환, 삭제, 필터링 등을 의미한다.

 

 

< 문자열 치환 >

 

다음 명령어를 통해, mylog.log 내의 AAA 를 BBB 로 치환하여 표준 출력한다.

mylog.log 의 내용은 변하지 않고 표준 출력만 진행한다.

만약 원본 파일에 덮어쓰고싶다면 -i 명령어를 사용

sed 's/AAA/BBB/g' mylog.log

sed -i 's/AAA/BBB/g' mylog.log

 

다른 예로, 탭 문자를 네 개의 white space 로 바꾸는 명령어는 다음과 같다.
sed 's/\t/    /g' mylog.log

 

참고로 / / 사이에 있는 것은 정규표현식이라고 함(!?)

 

 

 

< 필터링(삭제) >

 

다음 명령어를 통해, mylog.log 내의 AAA 가 포함된 줄을 삭제하고 출력한다.

sed '/AAA/d' mylog.log

 

다른 예로, https 라는 문자가 포함된 줄을 삭제하고 출력하는 명령어는 다음과 같다.

sed '/https/d' mylog.log

grep -v 명령어와 같다.

 

공백인 줄을 삭제하는 명령어는 다음과 같다.

sed '/^$/d' mylog.log

grep -v 명령어와 같다.

 

반대로, AAA 가 존재하는 줄만 출력하는 명령어는 다음과 같다.

즉, AAA 가 존재하지 않는 줄은 삭제
sed '/AAA/!d' mylog.log

grep 명령어와 똑같네

 

아래 명령어로 1~3 번째 줄을 삭제할 수 있다.

sed '1,2,3d' mylog.log

 

특정 줄에서만 삭제하고 싶다면 다음 명령어를 사용

예를 들어 5~10 라인에 있는 AAA 를 삭제하고 싶다면

sed '5,10s/AAA//g' mylog.log

 

 

sed 명령어를 정리하다보니 기능이 엄청나게 많아서 다 정리를 할 수 없을 지경 ... ㅎㄷㄷ

아래 좋은 블로그가 있으니 아래 참고.

https://soy.me/2016/04/22/sed/

 

Shell - sed 명령어 - soy blog

지난번에 grep 정리한 것(http://soy.me/2016/03/24/grep) 이 꽤 도움이 되었기에, 이어서 sed도 정리해본다. sed 비 대화식 편집기. stream editor. 원본 파일은 변경되지 않으며, 편집 결과는 표준 출력으로 출

soy.me

 

 

 

 

 

 

참고 

 

 

 

+ Recent posts