2 votes

Afficher la nième instance du modèle grepé

Voici mon problème. J'ai un problème avec un fichier .csv (Current.csv) car il y a des virgules placées aléatoirement dans les données, donc si je fais un awk sur le fichier, je n'obtiens pas des nombres de colonnes constants pour un type d'information particulier que je recherche. Heureusement, j'ai réalisé que ces infos sont toujours la troisième instance d'un format de date (m, mm)/(j, jj)/aa. Donc j'essaie l'expression régulière ci-dessous pour afficher uniquement les dates dans la ième ligne :

awk -F',' '{if (NR==$i)print}' Current.csv | grep -o "[0-9]{1,2}/[0-9]{1-2}/[0-9]{1,2}" | echo

Jusqu'à présent, cela n'affiche rien et je suis complètement bloqué quant à la raison. Je suppose que pour afficher la troisième, il suffit de rediriger tout cela vers :

awk {print $3}

Des idées sur le problème de recherche d'expression régulière awk'd ?

Ligne d'exemple
"lettresici",nombresici,"guillemetscassésici,mm/jj/aa,plusdechoses,mm/jj/aa,nombres,mm/jj/aa

2voto

mgorven Points 29736

En supposant que le fichier CSV est valide (c'est-à-dire que les champs contenant des virgules sont entre guillemets), vous devriez plutôt utiliser quelque chose qui le parse réellement comme CSV. Le script Python simple suivant extraira la deuxième colonne de chaque ligne.

python -c 'import csv; import sys; [sys.stdout.write(row[1]+"\n") for row in csv.reader(sys.stdin)]'

1voto

Alex B Points 116

I n'est pas défini, donc par défaut il est à zéro, et de toute façon vous voulez dire i et non $i.

Vous avez besoin de grep -E pour des expressions régulières étendues.

Le {1-2} dans le champ du mois devrait être {1,2} et les barres obliques doivent être protégées par des barres obliques inverses.

Rediriger vers echo fera perdre toute sortie car ce n'est pas un filtre, et de toute façon ce n'est pas nécessaire.

Comme le suggère mgorven, utilisez une approche différente qui gère les fichiers CSV.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X