Table of Contents
Linux – sed 명령 사용법
설정파일과 같은 텍스트 파일에 일부 텍스트를 수정 또는 추출하는데 편한 기능을 제공합니다.
샘플 파일
cat config.cfg
# API_HOST https://3.37.55.178
API_HOST https://192.168.10.100
API_PORT 8080
텍스트 추출
아래 명령으로 서버 아이피를 추출합니다.
sed -ne "s/\(^API_HOST[ \t]\+https:\/\/\)\([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\)/\2/p" "config.cfg"
-E
옵션을 사용하지 않는 경우 대부분의 특수문자를 \
로 escape 처리 해주어야 합니다.
(.......)
부분이 매칭되는 부분으로 \1
, \2
와 같이 변수로 사용할 수 있습니다.
s/\(........\)\(........\)/\2/p
복잡한 부분을 간략화 해보면 위와 같습니다.
텍스트 변경
-E
옵션을 사용하는 경우 \
로 escape 처리하지 않습니다.
sed -i -E "s/(^API_HOST[ \t]+https:\/\/)[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/\1111.222.333.444/" "config.cfg"
cat config.cfg
##API_HOST https://3.37.55.178
API_HOST https://111.222.333.444
API_PORT 8080
^API_HOST
와 같이 라인의 첫부분을 변경하도록 했으므로,
코멘트 처리한 라인은 변경되지 않습니다.
sed -i "s/111.222.333.444/111.111.111.111/g" "config.cfg"
cat config.cfg
##API_HOST https://3.37.55.178
API_HOST https://111.111.111.111
API_PORT 8080
검색해야할 텍스트를 이미 알고 있다면 정규식 없이 바로 치환할 수 있습니다.