buscar y reemplazar un valor en una línea de texto

buscar y reemplazar un valor en una línea de texto

Tengo un archivo de texto que contiene solo 1 línea de texto.

1314:Battery:1.90:50:30

Estoy tratando de averiguar si hay alguna forma de hacer grepy sedcambiar el valor 50 y 30 al siguiente

1314:Battery:1.90:45:35

que reduciría 5 de 50 y aumentaría 5 de 30.

¿Guíame si hay una mejor manera de resolver este problema? Recién comencé a aprender este script. Gracias =)

Respuesta1

awk -F":" '{OFS=":"; print $1,$2,$3,$4-5,$5+5}' filename

Producción:

1314:Batería:1.90:45:35

Respuesta2

Con perl:

perl -i -F: -lape '$F[3]-=5;$F[4]+=5;$_=join ":",@F' the-file

Con sh(asumiendo que esos números son siempre enteros decimales sin ceros a la izquierda):

IFS=: read -r a b c d e < the-file &&
  printf '%s\n' "$a:$b:$c:$((d-5)):$((e+5))" > the-file

Con versiones recientes de GNU awk:

gawk -i /usr/share/awk/inplace.awk -F: -vOFS=: '{$4-=5;$5+=5}1' the-file

No utilice-i inplaceas gawkintenta cargar primero la inplaceextensión (como inplaceo inplace.awk) desde el directorio de trabajo actual, donde alguien podría haber colocado malware. La ruta de la inplaceextensión suministrada gawkpuede variar según el sistema; consulte el resultado degawk 'BEGIN{print ENVIRON["AWKPATH"]}'

información relacionada