| sed 기초 편 참고: https://seul96.tistory.com/315
| sed 실전응용1 : ip 주소를 10.10.30.34에서 127.0.0.1로 모두 변경
테스트를 위해 ip 주소가 포함된 ipsedtest.txt를 만듬
vi ipsedtest.txt |
#FIDO Server URL fido.server.domain=http://10.10.30.34/MagicFIDO2Server/ ##FIDO RP URL fido.rp.server.domain=https://10.10.30.34/MagicFIDO2Server/ fido.rp.access.ipconfig.path=/home/magicfido/tomcat9/webapps/MagicFIDO2Server/WEB-INF/config/allow.conf fido.certification.path=/home/magicfido/tomcat9 fido.certification.file.pem=10.10.30.34.pem fido.server.ssl.auto.change.target.url=https://10.10.30.34 fido.rp.federation.reg.return.url={"www.da.com":"http://10.10.30.34:18080/MagicFIDO2Server/getFIDOResultTest.jspx"\, fido.token.encryption.rsa.privatekey.path=/home/magicfido/tomcat9/webapps/MagicFIDO2Server/WEB-INF/config/private.der #FIDO Server JWT token RAS public key file path(if using JWT > RSA) tca=/home/magicfido/tomcat9/webapps/MagicFIDO2Server/WEB-INF/config/KISARootCA4.der fido.official.mds.root.cert.path=/home/magicfido/tomcat9/webapps/MagicFIDO2Server/WEB-INF/config/iop/Root.cer #FIDO Certificate fingerprint multi check fido.multi.certificate.fingerprint=/home/magicfido/tomcat9/webapps/MagicFIDO2Server/WEB-INF/config/fingerprint.txt |
변경방법
sed s/10.10.30.34/127.0.0.1/g ipsedtest.txt
| sed 실전응용2 : 경로 변경하기
예를 들어 /home/magicfido의 경로를 /home/fido로 변경하고 싶을 때 아래와 같이 sed 명령어를 쓰면 에러가 난다.
[fido@localhost ~]$ sed s//home/magicfido//home/fido//g ipsedtest.txt
sed: -e expression #1, char 10: unknown option to `s'
sed의 치환자가 경로를 구분해주는 /와 동일하기 때문이다.
그렇다면 경로를 변경하고 싶을 때는 어떻게 해야할까?
sed의 같은경우 치환자를 /이외에 많은 것들로 바꿀 수 있다.
예를 들어 @로도 바꿀 수 있다.
[fido@localhost ~]$ sed s@/home/magicfido/@/home/fido/@g ipsedtest.txt
따라서 경로처럼 /가 들어가는 것을 치환할 경우 치환자를 변경해주는 것이 좋다.
| sed 실전응용3 : file 저장하기
sed 명령어는 필터 명령어로 실제 file에 영향을 주지 않습니다. 그렇다면 치환된 file을 저장하고 싶을 때는 어떻게 해야할까? 두가지가 방법이 존재한다.
1. 중간파일을 만들어서 덮어쓰기
sed s@/home/magicfido/@/home/fido/@g ipsedtest.txt
위에서 실행한 명령어의 결과를 저장하고 싶을 때는 아래와 같이 하면 된다.
[fido@localhost ~]$ sed s@/home/magicfido/@/home/fido/@g ipsedtest.txt > ipsedtest.txt.bak
즉 sed로 치환한 결과값을 ipsedtest.txt.bak에 저장한다는 소리이다.
두번째 방법은 중간파일을 만들지 않고 sed 명령어에 잇는 원래 파일을 덮어쓰는 -i 옵션을 사용할 수 있다.
2. sed -i 이용하기
우선 위에서 만들었던 bak file을 지우고 sed -i 옵션을 이용하고 뒤에 .bak 확장자를 붙여서 백업할 수 있습니다.
[fido@localhost ~]$ rm ipsedtest.txt.bak --기존에 만든 bak file 지우기
[fido@localhost ~]$ sed -i.bak "s@/home/magicfido/@/home/fido/@g" ipsedtest.txt
다음에는 sed를 이용하여 쉘 스크립트 만든것을 가져오도록 하겠습니다!
'Linux > Shell script' 카테고리의 다른 글
Centos7 mysql 5.7 install script (0) | 2021.10.21 |
---|---|
[sed - shell script] 동일 파일 반복 치환 후 파일 저장 (0) | 2021.09.28 |
awk를 이용하여 조건에 맞는 값 출력하기 + | 이용하여 다중 명령 (0) | 2021.09.24 |
sed 사용법 및 예시 (0) | 2021.09.18 |
linux tomcat 9 컨테이너 분리 shell script (0) | 2021.09.17 |
댓글