como dividir uma linha separada por vírgula no bash

0

Eu tenho um arquivo csv com esta aparência:

2017-06-01,3967485,Completed,local,in,0,13492,11746,2017-06-27 14:13:47+00,2017-06-27 14:20:16+00,389,ddb19040,mydomain.net,yourdomain.net,""
2017-07-01,3967488,Completed,local,in,0,13492,11746,2017-07-27 14:13:47+00,2017-06-27 14:20:16+00,389,ddb19040,mydomain.net,yourdomain.net,""

O que eu preciso fazer é escrever um script bash que percorra este arquivo linha por linha, e pegue o primeiro campo como um valor, e então salve o resto da linha sem o primeiro campo (e vírgula) como um variável separada.

Eu tenho o seguinte código até agora:

 for aline in $(cat /tmp/test.csv); do                         
       echo $aline 
 done       

Mas não sei como analisar cada linha. Quaisquer ponteiros seriam apreciados.

EDIT1

O uso da resposta sugerida produz a seguinte saída em new_file

   ,Completed,local,in,0,13492,11746,2017-06-27 14:13:47+00,2017-06-27 14:20:16+00,389,ddb19040,mydomain.net,yourdomain.net,""
   ,Completed,local,in,0,13492,11746,2017-07-27 14:13:47+00,2017-06-27 14:20:16+00,389,ddb19040,mydomain.net,yourdomain.net,""

Eu gostaria que ele incluísse o campo2 ($ b na resposta sugerida) no início de cada linha

    
por dot 28.02.2018 / 22:44

4 respostas

2

Que tal usar awk :

awk 'BEGIN{FS=",";OFS=","}{$1=""; print}' file_name
    
por 28.02.2018 / 22:59
1

Tente isto:

while IFS=, read -r a b; do echo "$b" >> new_file; done < file
cat new_file

link

    
por 28.02.2018 / 22:48
0
$ IFS=,
$ while  read -r a b ;do onevalue=$a; restvalue=$b; echo $a ;done <CSV_FILE >FirstF
$ cat FirstF
2017-06-01
2017-07-01

ponha seu código de processamento para o valor de repouso usando a variável $ b dentro do bloco de loop um val para cada loop

    
por 01.03.2018 / 04:10
0

Você pode usar sed

sed 's/[^,]*,//' csv.file

Se você quiser manter o primeiro col em um arquivo

sed -e 'h;s/,.*//w col1.file' -e 'x;s/[^,]*,//' csv.file

Ou com o gnu sed

sed -e 's/,/\n/;W col1.file' -e 's/[^\n]*\n//' csv.file
    
por 01.03.2018 / 21:39