Como converter “aaaa-mm-dd” para “dd.mm” na coluna do arquivo de texto usando awk (ou sed, etc.)?

0

Vamos considerar que temos a seguinte linha no arquivo de texto:

...
2018-09-13    5555    33-33    Some_string
...

Eu preciso alterar a primeira coluna (data como yyyy-mm-dd ) para outro formato ( dd.mm , ano de queda), sem tocar em outras colunas:

...
13.09    5555    33-33    Some_string
...

Como posso fazer isso programaticamente usando awk (ou sed , etc.)?

    
por N0rbert 24.09.2018 / 16:02

1 resposta

2

Possível solução

sed 's/^....-\(..\)-\(..\)/./'

Esses vários pontos podem não ser elegantes; o comando não se importa se lida com números; não importa se há algo mais na primeira "coluna". Esses problemas podem ser corrigidos com uma abordagem mais complexa, mas em sua forma atual, o comando é bastante simples.

O comando geral sed 's/A/B/' substitui o padrão A por B , no máximo uma vez por linha.

Em que A , neste caso, consiste em:

  • ^ - o começo de um marcador de linha,
  • .... - exatamente quatro caracteres,
  • - - literal - ,
  • (..) - exatamente dois caracteres referenciados depois com ,
  • - - literal - ,
  • (..) - exatamente dois caracteres referenciados posteriormente com .

E B é

  • - o que estava no segundo () em A ,
  • . - literal . ,
  • - o que estava no primeiro () em A .

Além disso, ( e ) têm o escape de \ .

Para processar um arquivo, adicione-o como o último argumento. Para processar um arquivo, use -i , por exemplo,

sed -i 's/^....-\(..\)-\(..\)/./' myfile.txt
    
por 24.09.2018 / 16:10

Tags