localize e substitua um valor em uma linha de texto

1

Eu tenho um arquivo de texto que contém apenas uma linha de texto

1314:Battery:1.90:50:30

Estou tentando descobrir se existe um grep e sed para alterar o valor 50 e 30 para o seguinte

1314:Battery:1.90:45:35

que eu reduziria 5 de 50 e aumentaria 5 de 30.

Por favor, me guie se existe uma maneira melhor de resolver este problema? Eu comecei a pegar este script. Obrigado =)

    
por Jeffery Chua 07.01.2015 / 16:38

2 respostas

3

com perl :

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

Com sh (assumindo que esses números são sempre inteiros decimais sem zeros à esquerda):

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

Com versões recentes do GNU awk :

gawk -i inplace -F: -vOFS=: '{$4-=5;$5+=5}1' the-file
    
por 07.01.2015 / 16:51
6
awk -F":" '{OFS=":"; print $1,$2,$3,$4-5,$5+5}' filename

Saída:

1314:Battery:1.90:45:35
    
por 07.01.2015 / 16:53