Eu estou tentando acrescentar uma coluna a um arquivo csv com 13 colunas.
Estou executando o seguinte comando:
awk -F "," 'BEGIN{ OFS="," } {gsub(/"/, "", $1);$14=system("date -jf \"%m/%d/%Y %H:%M:%S %p\" \""$1"\" \"+%s\"");print}' mycsv.csv > test
O resultado é que, no final do campo 13, o seguinte é anexado ^M,1
(ou ^M,0
e o valor da nova coluna, que é suposto ser o $ 14, é adicionado a uma segunda linha.
Então o csv quebra.
Qual é o problema aqui?
Exemplo de entrada:
"1/30/2017 11:14:55 AM","I","M","k6.0.1","E","jim","JimK","JIM","[email protected]","A","6.0.12","A","Now"
Resultado esperado:
"1/30/2017 11:14:55 AM","I","M","k6.0.1","E","jim","JimK","JIM","[email protected]","A","6.0.12","A","Now", 1485771295
UPDATE:
Isso:
awk -F"," 'BEGIN{ OFS="," } {gsub(/"/, "", $1);system("date -jf \"%m/%d/%Y %H:%M:%S %p\" \""$1"\" \"+%s\"")|getline $14; print}' mycsv.csv > test
Não tem o 0 ou 1 do status de saída de system
, mas tem a ^M
e a nova linha ativadas e, portanto, os $ 14 são impressos em uma nova linha
UPDATE 2:
$ cat mycsv.csv
"1/30/2017 11:14:55 AM","I","M","k6.0.1","E","jim","JimK","JIM","[email protected]","A","6.0.12","A","Now"
"1/30/2017 11:14:55 AM","I","M","k6.0.1","E","jim","JimK","JIM","[email protected]","A","6.0.12","A","Now"
"1/30/2017 11:14:55 AM","I","M","k6.0.1","E","jim","JimK","JIM","[email protected]","A","6.0.12","A","Now"
Fazendo:
$ awk -F"," '{printf; printf ","; gsub(/"/, "", $1);system("date -jf \"%m/%d/%Y %H:%M:%S %p\" \""$1"\" \"+%s\"")}' mycsv.csv > test
Failed conversion of ''1/30/2017 11:14:55 AM'' using format ''%m/%d/%Y %H:%M:%S %p''
date: illegal time format
usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ...
[-f fmt date | [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format]
E arquivo de resultados:
Quando eu faço gato eu vejo:
$ cat test
,1485771295 11:14:55 AM","I","M","k6.0.1","E","jim","JimK","JIM","[email protected]","A","6.0.12","A","Now"
,148577129511:14:55 AM","I","M","k6.0.1","E","jim","JimK","JIM","[email protected]","A","6.0.12","A","Now"
Quando abro com o vim, vejo um ^M
após "Now"
UPDATE 3:
Algo estranho, não consigo imprimir a linha completa. O seguinte dá lixo:
$awk -F',' '{ printf $0 }' mycsv.csv
","M","k6.0.1","E","jim","JimK","JIM","[email protected]","A","6.0.12","A","Now""
Mas isso funciona (mas eu não quero a nova linha que a impressão adiciona):
$ awk -F',' '{ print $0; }' mycsv.csv
"1/30/2017 11:14:55 AM","I","M","k6.0.1","E","jim","JimK","JIM","[email protected]","A","6.0.12","A","Now"
"1/30/2017 11:14:55 AM","I","M","k6.0.1","E","jim","JimK","JIM","[email protected]","A","6.0.12","A","Now"
"1/30/2017 11:14:55 AM","I","M","k6.0.1","E","jim","JimK","JIM","[email protected]","A","6.0.12","A","Now"