Je ne parviens pas à faire correspondre une colonne spécifique avec la commande grep. J'ai un fichier de test (test.txt) comme celui-ci ..
Bra001325 835 T 13 c$c$c$c$c$cccccCcc !!!!!68886676
Bra001325 836 C 8 ,,,,,.,, 68886676
Bra001325 841 A 6 ,$,.,,. BJJJJE
Bra001325 866 C 2 ,. HJ
Et je veux extraire toutes les lignes qui ont un numéro 866
dans la deuxième colonne. Quand j'utilise la commande grep
je reçois toutes les lignes qui contiennent le nombre ce nombre
grep "866" test.txt
Bra001325 835 T 13 c$c$c$c$c$cccccCcc !!!!!68886676
Bra001325 836 C 8 ,,,,,.,, 68886676
Bra001325 866 C 2 ,. HJ
Comment puis-je faire correspondre une colonne spécifique avec la commande grep?
Essayez de faire ceci:
$ awk '$2 == 866' test.txt
Inutile d'ajouter {print}
, le comportement par défaut de awk
consiste à imprimer sur une condition true
.
avec grep :
$ grep -P '^\S+\s+866\b' *
Mais awk peut aussi imprimer les noms de fichiers et est bien plus robuste que grep ici:
$ awk '$2 == 866{print FILENAME":"$0; nextfile}' *
Dans mon cas, le séparateur de champ n'est pas un espace mais une virgule. Donc, je devrais ajouter ceci, sinon cela ne fonctionnera pas pour moi (On Ubuntu 18.04.1).
awk -F ', ' '$2 == 866' test.txt