À la recherche d'un Fichier CSV à l'Aide de Grep
Permet de dire que j'ai un fichier csv comme ceci:
a,b1,12,
a,b1,42,
d,e1,12,
r,12,33,
Je veux utiliser grep pour retourner uniquement uniquement les lignes où la troisième colonne = 12. Donc, il serait de retour:
a,b1,12,
d,e1,12,
mais pas:
r,12,33,
Des idées pour une expression régulière qui va me permettre de faire cela?
Rien de plus compliqué que cela, vous devriez envisager de
awk
ou perl
.OriginalL'auteur David | 2010-03-03
Vous devez vous connecter pour publier un commentaire.
Je préfère passer directement à awk pour tester la valeur exactement
Cela, et tout regexp solution suppose que les valeurs des deux premiers champs ne contiennent pas de virgules
J'ai vraiment besoin d'apprendre
awk
! Je suis passé detr
àsed
perl sans toucherawk
Que faire si je veux prendre les valeurs de la colonne 3 à partir d'un autre fichier? Comment dois-je faire?
poser une nouvelle quesrion
OriginalL'auteur glenn jackman
"^[^,]\+,...
pour s'assurer que le troisième élément est12
(sinon, on aurait tort correspondre à une ligne comme celle-ci "a,b1,61,12").c'est un bon point. Je vais mettre à jour ma solution.
ajout d'une virgule à l'expression régulière de sorte qu'il ne correspond pas à
123
Bonne prise glenn!
OriginalL'auteur Vivin Paliath
Voici une variante:
L'avantage est que vous pouvez sélectionner le champ, simplement en changeant le nombre enfermés dans des accolades sans avoir à ajouter ou à soustraire littérale des copies manuellement.
12
OriginalL'auteur Dennis Williamson
lorsque vous avez des fichiers csv, où vous disposez de différents séparateurs tels que des virgules, l'utilisation de la scission, sur le terrain/séparateurs approche, ce n'est pas une expression. Des outils pour briser les chaînes de caractères comme awk, Perl/Python fait le travail facilement pour vous (Perl/Python a prise en charge de csv modules plus complexes csv analyse syntaxique)
Perl,
ou avec juste le shell
OriginalL'auteur ghostdog74
Outils Linux est pratiquement impossible d'processus csv, parce que la cité les champs peuvent contenir des caractères de saut de ligne selon rfc 1480 la Plupart des utilitaires spécialisés, sont des ordures, pour diverses raisons.
Voici un Node.js v7.10+ seul fichier exécutable qui “fonctionne” et produit convertis en objets json, un par ligne. Doit exécuter Linux macOS Windows
L'utilisation d'un fichier d'en-tête de ligne:
Sans ligne d'en-tête:
Le grep devient:
Sur le irect de texte que vous pouvez faire
Coller ce que csv1480json accessible via votre CHEMIN et de donner les autorisations d'exécutables:
OriginalL'auteur Harald Rudell