스크립트로 파일 내 문자열 수정 할 경우. 유용한 예제.
정규식
. -> 모든 문자
* -> 0개 이상
? -> 1개 또는 0개
예제 1
sed -i "s/\(# \)\?registry_host:.*/registry_host: \"${PRIVATE_REGISTRY}\"/" offline.yml
sed -i 's/\(# \)\?docker_insecure_registries:/docker_insecure_registries:/' offline.yml
-> 변수를 받을 경우 쌍따옴표(") 사용.
-> 변수가 있는데 따옴표(')를 사용한다면 문자 그대로 출력 ex) ${PRIVATE_REGISTRY}
-> \(# \)\? 원래 형태는 (# )? 이며, 특수문자이기 때문에 역슬래시(\)로 체크
-> (# )?registry_host 의미는 registry_host 또는 # registry_host를 의미 함
예제 2
sed -i "/docker_insecure_registries:/a\ - ${PRIVATE_REGISTRY}" docker.yml
sed -i '/docker_insecure_registries:/a\ - brightforest.com' docker.yml
-> a 옵션은 docker_insecure_registries: 다음라인에 - ${PRIVATE_REGISTRY} 를 추가
-> i 옵션은 이전 라인에 추가
예제 3
sed -i "s/container_manager: .*/container_manager: ${CLUSTER_RUNTIME/" k8s-cluster.yml
sed -i "s|kube_service_addresses: .*|kube_service_addresses: ${SERVICE_NETWORK}|" k8s-cluster.yml
-> 구분자로 /와 | 모두 사용 가능
-> path가 들어갈 경우 역슬래시를 써야해서 구분자 /를 쓰면 귀찮아짐
-> path가 있을 경우 구분자 |를 사용하면 역슬래시를 안써도 되서 편함.
예제 4
sed -i "s/\(# \)\?http_proxy: .*/http_proxy: /"http:/\/\${PROXY_SERVER}\"/" all.yml
sed -i "s/127\.0\.0\.1:6443/${MASTER0_IP}:6443/g" kube-admin.conf
-> 점(.) 앞에도 역슬래시(\)를 써야 함
옵션 참고
'Linux' 카테고리의 다른 글
[base64] 인코딩/디코딩 (0) | 2022.06.07 |
---|---|
리눅스 bash 문자열 변수 조작 (자르기, 삭제, 치환) (0) | 2021.10.26 |
[tee 명령어] 문자열 저장 (0) | 2021.07.02 |
[CentOS7] kubernetes master node - haproxy, keepalived (0) | 2021.06.25 |
sshpass로 한 번에 key 복사, 로그인없이 사용 (0) | 2021.06.02 |