유용한 sed 스크립트와 패턴들
(github.com)- 1줄만 출력
ㅤ→ sed -n '10p' file.txt
- 5번줄만 빼고 모든 라인에서 문자 치환
ㅤ→ sed '5!/s/foo/bar/' file.txt
- 특정문자로 시작하는 모든 라인에서 정규식 치환
ㅤ→ sed '/^hello/ s/h/H/' file.txt
- 5번줄부터 마지막 라인까지만 치환
ㅤ→ sed '5,$ s/foo/bar/' file.txt
- 빈파일 삭제
ㅤ→ sed '/^$/d' file
- 두 정규식 사이의 모든 라인 출력
ㅤ→ sed -nE '/^foo/,/^bar/p' file.txt
- 슬래시 포함 문자를 쉽게 찾기 위해 커스텀 딜리미터 사용
ㅤ→ sed 's_/bin/bash_/bin/sh_' file.txt
- 공백으로 나눠진 중복 문자열 제거(세번 중복된거는 제외)
ㅤ→ sed -E 's_([a-zA-Z0-9_]+) \1_\1_ig' f1
- 특정 패턴을 찾아서 변경후, 수정된 것만 다른 파일로 저장
ㅤ→ sed 's_foo_bar_w replaced.txt' file.txt
- 여러개 동시에 치환
ㅤ→ sed -e 's_foo_bar_' -e 's_hello_HELLO_' file.txt
- 두개 키워드 사이의 모든 코멘트 제거하고 빈줄 넣기
ㅤ→ sed -E '/start/,/end/ s/#.*//' file.txt
- #로 시작하는 모든 주석 지우기
ㅤ→ sed -E '/^#/d' f1
- 특정 패턴이 나타날때까지만 출력하기
ㅤ→ sed '/start/q' file.txt
- 특정 라인 이후에 파일을 삽입
ㅤ→ sed '5 r newfile.txt' file.txt
- 특정 정규식 매칭부분 이후의 라인에 텍스트 추가
ㅤ→ sed '/foo/a\AFTER FOO' file.txt
- 특정 정규식 매칭된 라인을 교체
ㅤ→ sed '/foo/c\FOO IS CHANGED' file.txt
- #으로 시작하는 모든 코멘트를 다른 파일에 저장
ㅤ→ sed -E '/^#/w comments.txt' file.txt
- 모든 두번째 줄만 출력(한줄건너 한줄, 3/4 등으로 변경 가능)
ㅤ→ sed -n '1~2p' file.txt
- 파일을 직접 수정하지만 백업을 생성
ㅤ→ sed -i.bak 's/hello/HELLO/' file.txt
- 정규식 매칭 이후에 두개의 빈줄 추가
ㅤ→ sed -E '/^#/G G' file.txt
슬래시 이외의 다른 문자도 구분자로 사용할 수 있다는 건 정말 필수 팁입니다.
apt 저장소 URL 바꿀 때라든가 꽤 자주 슬래시를 포함할 일이 있거든요