Dividir a coluna datetime no arquivo csv em MM / AAAA e a coluna de tempo separadamente e gravar no mesmo csv

0

Estou tentando usar o awk, dividir e imprimir, mas com erro

Entrada:

id  day userId  itemId

1   12/1/17 8:32    2232    tv

2   1/12/18 10:18   3232    fdfs

3   2/9/18 10:50    232     fdsf

4   3/6/18 12:35    345456  fdg

Saída esperada

id  datetime    monthyear   time    userId  itemId

1   12/1/17 8:32    12/17   8:32    2232    tv

2   1/12/18 10:18   1/18    10:18   3232    fdfs

3   2/9/18 10:50    2/18    10:50   232     fdsf

4   3/6/18 12:35    3/18    12:35   345456  fdg
    
por thinkingsavvy 14.09.2018 / 17:26

2 respostas

1

Que tal

awk -F"\t" '
NR == 1         {$2 = "datetime" OFS "monthyear" OFS "time"
                }
NR > 1          {split ($2, T, "[/ ]")
                 $2 = $2 OFS T[1] "/" T[3] OFS T[4]
                }
1
' OFS="\t" file
id  datetime    monthyear   time    userId  itemId
1   12/1/17 8:32    12/17   8:32    2232    tv
2   1/12/18 10:18   1/18    10:18   3232    fdfs
3   2/9/18 10:50    2/18    10:50   232 fdsf
4   3/6/18 12:35    3/18    12:35   345456  fdg
    
por 14.09.2018 / 17:47
0

RudiC mostra como transformar o arquivo. Para salvá-lo no mesmo arquivo:

  1. usando o GNU awk:

    gawk -i inplace '...' file
    
  2. usando sponge do pacote moreutils :

    awk '...' file | sponge file    
    
  3. Ou usando um arquivo temporário

    tmp=$(mktemp)
    awk '...' file > "$tmp" && mv "$tmp" file
    
por 14.09.2018 / 18:12