Eu tenho um arquivo que tem o seguinte formato
----------------------------------------
Name: cust foo
mail: [email protected]
Account Lock: FALSE
Last Password Change: 20170721085748Z
----------------------------------------
Name: cust xyz
mail: [email protected]
Account Lock: TRUE
Last Password Change: 20181210131249Z
----------------------------------------
Name: cust bar
mail: [email protected]
Account Lock: FALSE
Last Password Change: 20170412190854Z
----------------------------------------
Name: cust abc
mail: [email protected]
Account Lock: FALSE
Last Password Change: 20191030080405Z
----------------------------------------
Eu quero alterar Last Password Change
o formato de dados para, YYYY-MM-DD
mas não tenho certeza de como fazer isso com sed
ou awk
ou existe algum outro método, posso tentar fazer um loop e usar a date -d
opção, mas não tenho certeza se há uma maneira mais fácil de fazer com regex
Como tudo o que você está fazendo é adicionar dois traços e soltar alguns caracteres extras, não há muita necessidade de
date
.Para um padrão mais estrito, os pontos (que correspondem a qualquer caractere) podem ser substituídos
[0-9]
para corresponder apenas a dígitos.\1
etc. na substituição, é claro, se expandem para o que os padrões entre parênteses corresponderem.Esta é a minha proposta:
Resultado:
Consegui fazer isso com o seguinte
awk
comando:Usando
:
como separador de campo, se a primeira coluna corresponderLast Password Change
, usaremossubstr
para extrair o ano, mês e data e substituir a segunda coluna por esses valores no formato desejado.