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
참고
'Linux' 카테고리의 다른 글
[Linux] history 팁 (0) | 2021.07.05 |
---|---|
[Linux] /etc/passwd 설명 (0) | 2021.07.04 |
[Linux] 작업을 background 에서 동작시키고 싶을 때 (0) | 2021.06.22 |
[Crontab] 로그 위치 및 설정 위치 (0) | 2021.06.16 |
[Linux] Bash 쉘스크립트 개발 시작하기 링크 (0) | 2021.06.16 |