![buscar y reemplazar un valor en una línea de texto](https://rvso.com/image/36014/buscar%20y%20reemplazar%20un%20valor%20en%20una%20l%C3%ADnea%20de%20texto.png)
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 grep
y sed
cambiar 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 inplace
as gawk
intenta cargar primero la inplace
extensión (como inplace
o inplace.awk
) desde el directorio de trabajo actual, donde alguien podría haber colocado malware. La ruta de la inplace
extensión suministrada gawk
puede variar según el sistema; consulte el resultado degawk 'BEGIN{print ENVIRON["AWKPATH"]}'