AFAIK : doesn't need to be escaped here. However since . isn't in the range [0-9], the pattern [0-9]* won't match decimals like 55.5 - you'd need something like [0-9.]* i.e. "/$name/s/:[0-9.]*$/:$P/"
eu tenho isso:
sed -e "/$name/s/[0-9]\:*$/$P/" -i sales_info.txt
Quando eu uso o acima para alterar isso: Meu formato de arquivo de texto nome: no: no: type: p
Tom:8:987654:commission:0
Tommy:7:12379813:hourly:0
Fan:5:2132131:salaried:0
assumindo $ name = Tom, $ P = 55.5
eu entendo isso:
Tom:8:987654:commission:0
Tommy:7:12379813:hourly:55.5
Fan:5:2132131:salaried:0
No entanto, se eu tentar mudar o $ P de 55,5 para 41,5
torna-se
Tom:8:987654:commission:0
Tommy:7:12379813:hourly:55.41.5
Fan:5:2132131:salaried:0
Eu tentei:
sed -e "/$name/s/\:[0-9]*$/\:$P/" -i sales_info.txt
Altera apenas o valor de :0
Se o valor for maior que 0, ele não será alterado.
Assumindo se eu insistiria em usar sed para isso. coloco o :
na posição errada? Estou tentando alterar o último valor da coluna após :
AFAIK : doesn't need to be escaped here. However since . isn't in the range [0-9], the pattern [0-9]* won't match decimals like 55.5 - you'd need something like [0-9.]* i.e. "/$name/s/:[0-9.]*$/:$P/"