[쉘 프로그래밍을 위한 sed 활용 예제 정리]
1. 특정 패턴 아래 라인 삭제 또는 추가
sed -i '/apple.*/{n;d}' abc.txt // apple패턴아래 1줄 삭제
[결과] cat abc.txt
apple
banana
sed -i 's,\(apple.*\),\1\ngrape,g' abc.txt // apple패턴아래 grape 추가
[결과] cat abc.txt
apple
grape
ornage
banana
[원본]abc.txt 의 내용
apple
orange
banana
2. 개행문자 (newline) 이 2개 연속으로 있을 때를 이를 1개로 변경하는 명령
sed -i '/^$/N;/^\n$/D' filename
filename 의 내용중 newline 이 2개 연속으로 있을때 이를 1개로 치환하며 -i 옵션은 변경된 내용을 출력하지 않고 filename 에 저장
3. sed 명령어에 변수사용
sed "s/abc/$dma/g" 와 같이 큰따옴표(") 안에 변수를 사용하면 된다.
sed 's/abc/$dma/g' 명령어는 abc 문자를 $dma 라는 문자로 바꾸라는 뜻이다.
즉, 작은따음표의 경우에는 $dma를 변수 dma로 인식하지 않고 문자열 $dma로 인식한다.
4. 특정패턴 위/아래 에 내용 추가
sed "/찾을패턴/i추가할패턴" 파일명 (상단에 추가)
sed "/찾을패턴/a추가할패턴" 파일명 (하단에 추가)
5. 특정 라인 맨 앞/뒤 내용 추가
sed "행번호s/^/문자열/" 파일명 (라인 맨 앞 추가)
sed "행번호s/$/문자열/" 파일명 (라인 맨 뒤 추가)
6. 변수 값에 슬래쉬 (/) 가 포함된 값을 치환 할 때
[예제]
var="/home/user1/public_html" 변수 값 앞에 주석 (#) 을 붙인다고 하면
sed -i "s~$var~#$var~g" "파일명"
7. 문자열 앞/뒤 공백 제거
's/^ *//g' : 앞 공백 제거
's/ *$//g' : 뒤 공백 제거
[응용] 문자열 맨 앞/뒤 공백 한번에 제거
sed -e 's/^ *//g' -e 's/ *$//g' > test.txt