sed 참고사이트

sed 테스트 사이트 - https://sed.js.org/

sed 제너레이터 - https://www.jamiebalfour.scot/devkit/sed/

sed 문서 - https://www.gnu.org/software/sed/manual/sed.html

기타 설명 - https://stackoverflow.com/a/43997253

예제

1. 찾기

bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# George 포함
sed -n '/George/p'
\# George 으로 시작하는 전체
sed -n '/^George/p'

#  숫자-숫자 \1 은 1번째 일치, \2는 2번째 일치
# -E 옵션은 정규표현식의 특수문자( {}, () 등) 사용시, /(이스케이프) 를 안쓰게 해준다. (ERE - extend RE) 
sed -En 's/([0-9]{1,})-([0-9]{1,})/\1 /gp'
# George Washington, 1789-1797
# \1 1789
# \2 1797

# -n 옵션은 기본적으로 행을 같이 출력하지 않는다. ( -n 옵션을 안주면 일치하지 않아도 행이 출력)
# 이스케이프 필요
-n 's/[^0-9]*\([0-9]\{1,\}\)\.\([0-9]\{1,\}\).\([0-9]\{1,\}\)/\1.\2.\3/p' 
# 이스케이프 불필요
-nr 's/[^0-9]*([0-9]{1,})\.([0-9]{1,})\.([0-9]{1,})/\1.\2.\3 /p'
# \0 version = 1.40.432
# \1 1
# \2 40
# \3 432

2. 찾기 바꾸기

bash
1
2
3
4
5
6
7
8
9
10
11
sed's/George/world/'

# 숫자 1~5글자를 number로 변경
sed "s/[0-9]\{1,5\}/number/"
# George Washington, 1789-1797
# George Washington, number-1797

# 숫자 1~5글자를 number로 변경 (g 옵션)
sed "s/[0-9]\{1,5\}/number/g"
# George Washington, 1789-1797
# George Washington, number-number