Système d'exploitation: Méthode OSX: à partir de la ligne de commande, donc en utilisant sed, cut, gawk, bien que de préférence aucun module d'installation.
Essentiellement, j'essaie de prendre la première colonne d'un fichier csv et de l'analyser dans un nouveau fichier.
Exemple de fichier d'entrée
EXAMPLEfoo,60,6
EXAMPLEbar,30,6
EXAMPLE1,60,3
EXAMPLE2,120,6
EXAMPLE3,60,6
EXAMPLE4,30,6
Sortie désirée
EXAMPLEfoo
EXAMPLEbar
EXAMPLE1
EXAMPLE2
EXAMPLE3
EXAMPLE4
Je veux donc la première colonne.
Voici ce que j'ai essayé jusqu'à présent:
awk -F"," '{print $1}' in.csv > out.txt
awk -F"," '{for (i=2;i<=NF;i++)}' in.csv > out.txt
awk -F"," 'BEGIN { OFS="," }' '{print $1}' in.csv > out.txt
cat in.csv | cut -d \, -f 1 > out.txt
Aucun ne semble fonctionner, soit ils impriment simplement la première ligne, soit rien du tout, donc je suppose qu'il ne parvient pas à lire ligne par ligne.
Votre dernière option fonctionne parfaitement pour moi:
$ cat > in.csv # Then pasted the example input followed by Ctrl+D:
EXAMPLEfoo,60,6
EXAMPLEbar,30,6
EXAMPLE1,60,3
EXAMPLE2,120,6
EXAMPLE3,60,6
EXAMPLE4,30,6
[Ctrl+D]
$ cat in.csv | cut -d, -f1
EXAMPLEfoo
EXAMPLEbar
EXAMPLE1
EXAMPLE2
EXAMPLE3
EXAMPLE4
Peut-être que les fins de ligne vous mordent ici? Si le fichier a des fins de ligne de style DOS ou même de style ancien Mac, cela peut provoquer un comportement étrange. Essayez d'exécuter file in.csv
et voyez de quoi il s'agit.
$ file in.unix.csv
in.unix.csv: ASCII text
$ file in.dos.csv
in.dos.csv: ASCII text, with CRLF line terminators
Si ce dernier est votre situation, utilisez le dos2unix
outil pour convertir le fichier.
Edit: Sur OS X, il semble flip
est ce que vous voulez .
J'ai copié-collé votre exemple d'entrée, l'ai enregistré sous in.csv, puis j'ai exécuté votre première ligne,
awk -F"," '{print $1}' in.csv > out.txt
et cela a parfaitement fonctionné, comme ceci:
$ emacs in.csv
$ cat in.csv
EXAMPLEfoo,60,6
EXAMPLEbar,30,6
EXAMPLE1,60,3
EXAMPLE2,120,6
EXAMPLE3,60,6
EXAMPLE4,30,6
$ awk -F"," '{print $1}' in.csv > out.txt
$ cat out.txt
EXAMPLEfoo
EXAMPLEbar
EXAMPLE1
EXAMPLE2
EXAMPLE3
C'est dans Terminal.app sur OS X 10.5
Pour moi, la coupe produit le résultat attendu:
cut -d, -f1 < in.csv > out.txt
Si Perl est une option:
Perl -F, -lane 'print $F[0]' in.csv > out.txt
Ces options de ligne de commande sont utilisées:
-n
boucle autour de chaque ligne du fichier d'entrée-l
supprime les sauts de ligne avant le traitement et les ajoute à nouveau après-a
mode autosplit - divise les lignes d'entrée en @F
tableau. Par défaut, la division sur un espace blanc.-e
exécute le code Perl-F
modificateur de fractionnement automatique, dans ce cas, se divise sur ,
@F
est le tableau de mots de chaque ligne, indexé en commençant par $F[0]