como alterar a cadeia de texto com script de shell

1

/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

Como posso substituir a linha em temp.txt por URL2 em list.txt com script de shell?

após o comando

/home/list.txt

URL http://url_address.com:URL1
URL http://url_new_address.com:URL2
URL http://url_address.com:URL3
    
por tioma 25.02.2018 / 21:49

1 resposta

1

Graças à sugestão de don_crissti e à solução 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

Isso encontrará qualquer linha contendo o final em :URL2 e substituirá por:

URL http://url_new_address.com:URL2
    
por 25.02.2018 / 21:53