J'ai reçu cette question lors d'une interview. J'ai dit que je pouvais le faire avec Java ou Python comme xreadlines()
fonction pour parcourir le fichier entier et aller chercher la colonne, mais l'intervieweur voulait que j'utilise simplement linux cmd. Comment puis-je y parvenir?Comment puis-je obtenir la deuxième colonne d'un très gros fichier csv en utilisant la commande linux?
Répondre
Vous pouvez utiliser la commande awk
.
Ci-dessous un exemple d'imprimer la deuxième colonne d'un fichier:
awk -F, '{print $2}' file.txt
Et pour stocker, vous rediriger dans un fichier:
awk -F, '{print $2}' file.txt > output.txt
Merci, alors que cela résout le problème du fichier csv, que diriez-vous ' point? Puis-je sortir la colonne dans un fichier en utilisant awk? – Pythoner
Redirection d'E/S standard pour créer un fichier des résultats. 'Awk -F, '{print $ 2}' file.txt>/some/file/path' –
Les solutions ci-dessus utilisant awk ne fonctionneront pas sans le drapeau -F. Awk se sépare sur l'espace blanc par défaut, pas des virgules. – davlet
Vous pouvez utiliser cut:
cut -d, -f2 /path/to/csv/file
J'ajouterais à réponse Andreas, mais ne peux pas encore commenter. Avec csv, vous devez donner à awk un argument de séparateur de champs, ou définir des champs liés par des espaces au lieu de virgules. (. De toute évidence, csv qui utilise un séparateur de champ différent aura besoin d'un autre caractère à déclarer)
awk -F, '{print $2}' file.txt
compte tenu de la brièveté ici, je vous donne une réponse complète la manière paresseuse possible: premier rendez-vous ici http://stackoverflow.com/questions/1521462/looping-through-the-content-of-a-file-in-bash alors allez ici http://stackoverflow.com/questions/19737675/shell-script-how-to-extract -string-using-regular-expressions et utilisez '^. *, (. *),. * $' (ou quelque chose à cet effet) pour le regEx – Deryck