Re: [shell-script] alteração parcial de string num érica
From:
itamarnet
Subject:
Re: [shell-script] alteração parcial de string num érica
Date:
05 Feb 2017 20:12:03 +0000
Cesar
Não sei o quanto esta familiarizado com o uso do sed, mas como se identificou como amador tentarei ser mais didático sem intenção de ofendê-lo.
Nesse caso a sugestão que enviei é uma opção, mas não a única, e a do Júlio só não serve pela interpretação diferente do caso, mas normalmente as soluções do mestre são "matadoras"
No lugar do segundo exemplo que mostrei:
$ sed -r 's/19([0-9]{2}[0-1][0-9][0-3][0-9])/20\1/'
<<< 19110720
Use:
$ sed -r 's/19([0-9]{2}[0-1][0-9][0-3][0-9])/20\1/' SEU_ARQUIVO
dessa forma as alterações serão exibidas na saída padrão, que normalmente é a tela.
Se precisar jogar essas alterações em outro arquivo pode redirecionar a saida dessa forma:
$ sed -r 's/19([0-9]{2}[0-1][0-9][0-3][0-9])/20\1/' SEU_ARQUIVO > NOVO_ARQUIVO
Se a intenção é modificar no arquivo original, pode usar o parâmetro '-i'
$ sed -i -r 's/19([0-9]{2}[0-1][0-9][0-3][0-9])/20\1/' SEU_ARQUIVO
Mas se precisar alterar no original, mas quer ter um backup do original sem modificações pode especificar junto um sufixo junto ao parâmetro '-i'. Por exemplo guardar o original com a extensão '.ori'
$ sed -i.ori -r 's/19([0-9]{2}[0-1][0-9][0-3][0-9])/20\1/' SEU_ARQUIVO
Essa é um das formas mais com Sed para esse caso, mas há outras opções usando o Sed mesmo, ou outra ferramenta
Em todos os casos acima, o trecho: 's/19([0-9]{2}[0-1][0-9][0-3][0-9])/20\1/'
no seu caso poderia ser também: 's/DATE>19/DATE>20/'
Obs.: Esse regra dever ser modificada caso haja a questão dos anos 70, se o valor for acima ou abaixo, como mencionei no e-mail anterior.