
eu tenho isto :
sed -e "/$name/s/[0-9]\:*$/$P/" -i sales_info.txt
Quando eu uso o acima para mudar isso: Meu formato de arquivo de textonome:não:não:tipo:p
Tom:8:987654:commission:0
Tommy:7:12379813:hourly:0
Fan:5:2132131:salaried:0
assumindo $nome = Tom , $P = 55,5
Eu entendi isso :
Tom:8:987654:commission:0
Tommy:7:12379813:hourly:55.5
Fan:5:2132131:salaried:0
No entanto, se eu tentar alterar o $P de 55,5 para 41,5
se torna
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
Ele apenas altera o valor de :0
Se o valor for maior que 0 , não mudará em nada. Supondo que eu insistiria em usar sed para isso. coloquei o :
na posição errada? Estou tentando alterar o valor da última coluna depois:
Responder1
AFAIK: não precisa ser escapado aqui. Porém desde então. não estiver no intervalo [0-9], o padrão [0-9]* não corresponderá a decimais como 55,5 - você precisaria de algo como [0-9.]* ou seja, "/$nome/s/: [0-9.]*$/:$P/"