2016-10-30 5 views
0

J'ai des ID dans la première colonne de data.csv avec des en-têtes. Je souhaite ignorer l'en-tête et stocker les valeurs de la colonne 1 dans la variable ids sous la forme 102 103 104 .... pseudocode dans la ligne ids.append($col1) où je veux ajouter la valeur de courant de ligne à la fin de la ligne avec un espaceComment analyser le fichier CSV pour une longue ligne dans Bash?

# http://stackoverflow.com/a/4286841/54964 
while IFS=, read col1 
do 
    ids.append($col1) # Pseudocode 
done < data.csv 

data.csv

102 
103 
104 

sortie prévue

ids=(102 103 104) 

OS: Debian 8.5
bash: 4.3.30 (1)

Répondre

2

Avec bash GNU et de la queue GNU:

#!/bin/bash 

array=() 
while IFS=, read -r col1 coln 
do 
    array+=("$col1") # append $col1 to array array 
done < <(tail -n +2 data.csv) 

declare -p array 
+0

J'utilise cette ici pour vous montrer le contenu du tableau de tableau. – Cyrus

+1

Si je remplace ',' par ':' et 'data.csv' par'/etc/passwd' cela retourne tous les utilisateurs de mon système Linux: 'declare -a array = '([0] =" root "[1 ] = "démon" [2] = "bin" [3] = "sys" [4] = "sync" [5] = "jeux" [6] = "man" [7] = "lp" [8] = "mail" [9] = "news" [10] = "uucp" [11] = "proxy" [12] = "www-data" [13] = "sauvegarde" [14] = "liste" [15 ] = "irc" [16] = "gnats" [17] = "personne" [18] = "libuuid" [19] = "syslog" [20] = "messagebus" [21] = "usbmux" [22] = "avahi-autoipd" [23] = "avahi" [24] = "kernoops" [25] = "impulsion" [26] = "rtkit" [27] = "hplip" [28] = "kdm" [29 ] = "saned" [30] = "bar" [31] = "sshd" [32] = "cyrus" [33] = "foo" [34] = "dnsmasq") '' – Cyrus

+1

J'ai mis à jour ma réponse sauter la première ligne de votre fichier. – Cyrus