web-dev-qa-db-fra.com

Comment obtenir la première colonne de chaque ligne à partir d'un fichier CSV?

Comment obtenir la première colonne de chaque ligne d'un fichier CSV d'entrée et la sortie dans un nouveau fichier? Je pense utiliser awk mais je ne sais pas comment.

25
Junba Tester

Essaye ça:

 awk -F"," '{print $1}' data.txt

Il séparera chaque ligne d'entrée du fichier data.txt en différents champs en fonction du caractère , (comme spécifié par le -F) et imprimera le premier champ (colonne) sur la sortie standard.

55
Levon

Peut être fait:

$ cut -d, -f1 data.txt
49
user647772

Contribution  

a,12,34
b,23,56

Code  

awk -F "," '{print $1}' Input

Format

awk -F <delimiter> '{print $<column_number>}' Input
6
Debaditya
echo "a,b,c" | cut -d',' -f1 > newFile
6
Nykakin

Ceci peut être réalisé en utilisant grep:

$ grep -o '^[^,]\+' file.csv
3
kenorb

Utiliser Perl:

Perl -F, -lane 'print $F[0]' data.txt > data2.txt

Ces options de ligne de commande sont utilisées: 

  • -n boucle autour de chaque ligne du fichier d'entrée
  • -l supprime les nouvelles lignes avant traitement et les rajoute après 
  • -a mode autosplit - divise les lignes d’entrée dans le tableau @F. La valeur par défaut est la division sur les espaces blancs. 
  • -e exécuter le code Perl 
  • -F modificateur autosplit, dans ce cas, scinde le , 

Si vous souhaitez modifier votre fichier d'origine sur place, utilisez l'option -i:

Perl -i -lane 'print $F[0]' data.txt


Si vous souhaitez modifier votre fichier d'origine sur place et en faire une copie de sauvegarde:

Perl -i.bak -lane 'print $F[0]' data.txt


Si vos données sont séparées par des espaces et non par des virgules:

Perl -lane 'print $F[0]' data.txt

0
Chris Koknat