쉘 스크립트를 사용하여 텍스트 문자열을 변경하는 방법

쉘 스크립트를 사용하여 텍스트 문자열을 변경하는 방법

/집/임시.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

관련 정보