Edite campos separados por vírgula

0

Entrada:

1,012018,111
2,1-2018,111
3,10-2018,111

Saída:

1,01/2018,111
2,01/2018,111
3,10/2018,111

Como posso conseguir isso que significa edição do mês e ano para ser mm / aaaa

    
por αԋɱҽԃ αмєяιcαη 03.07.2018 / 22:56

3 respostas

1

Com o GNU Awk, use patsplit para dividir o segundo campo delimitado por vírgula em subcampos de no máximo dois dígitos decimais:

$ gawk 'BEGIN{OFS=FS=","} {patsplit($2,a,/[0-9][0-9]?/); $2 = sprintf("%02d/%d%d", a[1], a[2], a[3])} 1' file
1,01/2018,111
2,01/2018,111
3,10/2018,111

Se o Perl é uma opção

perl -F, -lpe '
  $F[1] =~ s{(\d\d?)-?(\d+)}{sprintf "%02d/%d", $1, $2}e; 
  $_ = join ",", @F
' file
    
por 03.07.2018 / 23:20
0

sed-e 's /^(.), (. ), (. ) / \ 2 / g' -e 's / ([0- 9] {1,2}) ([0-9] {4}) / \ 1- \ 2 / g 'arquivo *

s / ^ (. ), (. ), (. *) / \ 2 / g - divide com base em vírgulas e obtém o segundo valor s / ([0-9] {1,2}) ([0-9] {4}) / \ 1- \ 2 / g - divide e insere '-' entre ano e mês

    
por 06.07.2018 / 07:34
0

sed-e 's / ^ (. ), ([0-9] {1,2}) ([0-9] {4}), (. ) / \ 1 , \ 2- \ 3, \ 4 / g 'test.txt

  • ^ (. *), = captura até primeiro ',' e armazenado em \ 1
  • ([0-9] {1,2}) = captura número de 1 ou 2 dígitos e armazena em \ 2
  • ([0-9] {4}) = captura 4 não fez e armazena em \ 3
  • , (. *) \ 4 = capture o resto de ',' e armazene-o em \ 4
  • E substitua de acordo
por 06.07.2018 / 10:18