![쉘 스크립트를 사용하여 텍스트 문자열을 변경하는 방법](https://linux55.com/image/128412/%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%ED%85%8D%EC%8A%A4%ED%8A%B8%20%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84%20%EB%B3%80%EA%B2%BD%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
/집/임시.txt
http://url_new_address.com
/홈/목록.txt
URL http://url_address.com:URL1
URL http://url_address.com:URL2
URL http://url_address.com:URL3
쉘 스크립트를 사용하여 temp.txt의 행을 list.txt의 URL2로 바꾸려면 어떻게 해야 합니까?
명령 후
/홈/목록.txt
URL http://url_address.com:URL1
URL http://url_new_address.com:URL2
URL http://url_address.com:URL3
답변1
제안해 주신 don_crissti와 Stéphane Chazelas에게 감사드립니다.해결책나는 다음을 생각해 냈습니다.
#!/bin/sh
lhs=':URL2'
rhs="URL $(cat temp.txt):URL2"
escaped_lhs=$(printf '%s\n' "$lhs" | sed 's:[][\/.^$*]:\\&:g')
escaped_rhs=$(printf '%s\n' "$rhs" | sed 's:[\/&]:\\&:g;$!s/$/\\/')
sed "s/.*$escaped_lhs/$escaped_rhs/" list.txt
그러면 끝이 포함된 줄을 찾아 :URL2
다음으로 바꿉니다.
URL http://url_new_address.com:URL2