#1 Le 24/05/2017, à 13:18
- Link_Octree
Restreindre grep à une seule colonne ?
Bonjour,
Je dispose du fichier-type.txt suivant:
23 May 2017 09:27:16,8651,81.***.**.***,BT,BT,United Kingdom,DORSET,BRIDPORT,WINDOWS NT 10.0,768X1366,EN-US,CHROME,58.0.3029.110,GMT+00:00,,A,2
23 May 2017 09:23:14,79617154,94.**.***.**,OTENET S.A.,OTENET S.A.,Greece,DRAMA,DRÁMA,WINDOWS NT 6.1,1050X1680,EL,CHROME,58.0.3029.110,GMT+02:00,,C,1
23 May 2017 09:01:04,127,94.***.**.***,OTENET S.A.,OTENET S.A.,Greece,ATTIKI,ATHENS,WINDOWS NT 6.1,1080X1920,EL,CHROME,58.0.3029.110,GMT+02:00,,G,1
Je voudrais "séparer" ce fichier selon la valeur du champ n°16. Ce champ peut avoir plusieurs valeurs possibles, listées dans mon fichier valeurs-possibles.txt
Le code devrait, je pense, être proche du suivant:
while read line; do
cat fichier-type.txt | grep "$line" > A.csv
done <valeurs-possibles.txt
Là où je bloque, c'est comment restreindre grep à une colonne spécifique (la 16 dans mon cas) ?
J'ai essayé pas mal de choses, y compris une adaptation du code suivant, sans succés:
awk -F, '$3 == 12' file.csv
Merci d'avance
Hors ligne
#2 Le 24/05/2017, à 14:00
- pingouinux
Re : Restreindre grep à une seule colonne ?
Bonjour,
Si j'ai bien compris (car la demande n'est pas très précise), peut-être ceci ?
while read val; do
awk -F, -vval="$val" 'val==$16{print >val".csv"}' fichier-type.txt
done <valeurs-possibles.txt
Hors ligne
#3 Le 25/05/2017, à 11:35
- Link_Octree
Re : Restreindre grep à une seule colonne ?
Merci beaucoup, çà produit exactement le résultat que je voulais
Si ce n'est pas trop te demander, pourrais-tu expliquer un peu ta commande ? En particulier le -vval="$val" j'ai cru à une faute de frappe au début.
Hors ligne
#4 Le 25/05/2017, à 11:52
- pingouinux
Re : Restreindre grep à une seule colonne ?
awk -v variable_awk=valeur '{On peut utiliser variable_awk ici}' fichier
Voici un extrait de man awk -> OPTIONS
-v var=val
--assign var=val
Assign the value val to the variable var, before execution of
the program begins. Such variable values are available to the
BEGIN block of an AWK program.
Hors ligne
#5 Le 25/05/2017, à 13:05
- moko138
Re : Restreindre grep à une seule colonne ?
En une ligne "si j'ai bien compris (car la demande n'est pas très précise), peut-être ceci" :
cat fichier-type.txt | tr -s " " | cut -d" " -s -f16 > valeurs-possiblesBIS.txt
%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel : À la découverte de dcraw
Hors ligne