Text-Processing

如何使用 shell 腳本更改文本字元串

  • February 25, 2018

/home/temp.txt

http://url_new_address.com

/home/list.txt

URL http://url_address.com:URL1
URL http://url_address.com:URL2
URL http://url_address.com:URL3

如何將 temp.txt 中的行替換為 list.txt 中的 URL2 和 shell 腳本?

命令後

/home/list.txt

URL http://url_address.com:URL1
URL http://url_new_address.com:URL2
URL http://url_address.com:URL3

感謝 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

引用自:https://unix.stackexchange.com/questions/426531