
tengo esto :
sed -e "/$name/s/[0-9]\:*$/$P/" -i sales_info.txt
Cuando uso lo anterior para cambiar esto: Mi formato de archivo de textonombre:no:no:tipo:p
Tom:8:987654:commission:0
Tommy:7:12379813:hourly:0
Fan:5:2132131:salaried:0
suponiendo $nombre = Tom, $P = 55,5
entiendo esto :
Tom:8:987654:commission:0
Tommy:7:12379813:hourly:55.5
Fan:5:2132131:salaried:0
Sin embargo, si intento cambiar el $P de 55,5 a 41,5
se vuelve
Tom:8:987654:commission:0
Tommy:7:12379813:hourly:55.41.5
Fan:5:2132131:salaried:0
Yo he tratado :
sed -e "/$name/s/\:[0-9]*$/\:$P/" -i sales_info.txt
Solo cambia el valor de :0
Si el valor es mayor que 0, no cambiará en absoluto. Suponiendo que insistiría en usar sed para esto. ¿Lo he colocado :
en la posición incorrecta? Estoy intentando cambiar el valor de la última columna después:
Respuesta1
Respondido en los comentarios.:
AFAIK: no es necesario escapar aquí. Sin embargo, desde . no está en el rango [0-9], el patrón [0-9]* no coincidirá con decimales como 55,5; necesitaría algo como [0-9.]* es decir, "/$nombre/s/: [0-9.]*$/:$P/"