shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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.

Isso lhe ajuda?


[]'s
Itamar

reply via email to

[Prev in Thread] Current Thread [Next in Thread]