Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 17/06/2014, à 18:10

Link_Octree

Restreindre grep à une collonne uniquement ?

Hello,

J'ai le fichier visible ci-dessous,
Je voudrais que ma commande retourne le numéro de chaque ligne, avant d'afficher la valeur qu'elle contient, mais qu'elle n'affiche à l'écran que les lignes dont la valeur de la seconde colonne est égale à 5.

2
1
3
1
4
2
1
3
2
1
1
3
2
1
1
8
2
2
3
1
1
5
4
1
1
1
1
8
1
4
1
2
3
1
1
2
1
1
3
1
1
3
1
3
1
5
5
3
1
8
2
3
2
1
1
4
3
3
3
1
10
4
3
5
3
2
7
1
3
1
2
3

Je ne peux pas utiliser cut de la façon dont j'ai l'habitude de le faire car j'aimerais retrouver le numéro de ligne dans le rendu, sous la forme:

 
    22	5
    46	5
    47	5
    64	5

Si vous aviez des propositions de solutions, de préférence des codes assez simples à comprendre, pour que je puisse l'adapter à d'autres scripts, merci smile !

Dernière modification par Link_Octree (Le 17/06/2014, à 18:28)

Hors ligne

#2 Le 17/06/2014, à 18:28

Postmortem

Re : Restreindre grep à une collonne uniquement ?

Salut,
Ton fichier, à la base, ne contient bien qu'une liste de valeurs sur une seule colonne ?
Si c'est le cas :

awk '/^5$/{print NR,$0}' fichier

Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#3 Le 17/06/2014, à 19:24

Link_Octree

Re : Restreindre grep à une collonne uniquement ?

C'est bien celà oui, je teste celà dès que possible merci smile

Connaitrais-tu une variable pour afficher toutes les lignes (précédé du numéro de ligne) contenant une valeur supérieure à 5 ? Ou moins proprement une valeur de 5, 6, 7, etc jusqu'à 25 ?

Merci beaucoup !

Hors ligne

#4 Le 17/06/2014, à 19:55

Postmortem

Re : Restreindre grep à une collonne uniquement ?

awk '$0 >= 5 {print NR,$0}' fichier

Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#5 Le 17/06/2014, à 20:52

pingouinux

Re : Restreindre grep à une collonne uniquement ?

Bonsoir,
Autre méthode (c'est une réponse à la question initiale)

nl fichier | grep -P '\t5$'

ou

grep -nw 5 fichier | tr ":" " "

Ajouté : Et voici une variante pour la question en #3

nl fichier | awk '$2>=5'

Édité

Dernière modification par pingouinux (Le 18/06/2014, à 05:57)

Hors ligne

#6 Le 18/06/2014, à 20:26

Link_Octree

Re : Restreindre grep à une collonne uniquement ?

Merci beaucoup les gars, les deux solutions fonctionnent parfaitement smile

Hors ligne

#7 Le 20/06/2014, à 16:52

Link_Octree

Re : Restreindre grep à une collonne uniquement ?

Plutôt que d'ouvrir un autre thread pour çà:

J'ai intégrée la solution proposée par @pingouinux dans mon script:

nl fichier | awk '$2>=5'

A présent, celà m'arrangerais de pouvoir affecter le nombre minimal (5) dans une variable que je pourrais réutiliser pour obtenir un code du type:

nombre_mini=5
nl fichier | awk '$2>=$nombre_mini'

Celà pose des erreurs d'interprétation dans mon script, je pense que c'est lié aux simple quote, mais le fait de les remplacer par des doubles ne résoud pas le problèmes car à ce moment là, la partie "$2" semble être interprétée anormalement à son tour.

Si vous aviez une idée de solution pour résoudre celà, merci beaucoup, à nouveau smile !

Hors ligne

#8 Le 20/06/2014, à 17:34

pingouinux

Re : Restreindre grep à une collonne uniquement ?

Voilà !

nl fichier | awk '$2>='"$nombre_mini"

Ajouté : Autre solution

nl fichier | awk -v mini=$nombre_mini '$2>=mini'

Dernière modification par pingouinux (Le 20/06/2014, à 17:36)

Hors ligne

#9 Le 21/06/2014, à 16:13

Link_Octree

Re : Restreindre grep à une collonne uniquement ?

Merci pour le trick, çà fonctionne parfaitement smile

Hors ligne