GNU/Linux >> Tutoriels Linux >  >> Linux

Comment grep les lignes qui ont plus qu'un nombre spécifique de caractères spéciaux

Solution Perl :

perl -ne 'print if tr/,// > 4'
  • -n lit le fichier ligne par ligne
  • l'opérateur tr renvoie le nombre de correspondances.

Pour imprimer les lignes avec moins de 4, il suffit de changer > à < .


Utilisation du grep commande :

grep -E '(,.*){5}' myfile

Fait le travail. Explication :

-E :utilisez une expression régulière étendue...

'(,.*) :... pour trouver une virgule suivie d'un nombre quelconque de caractères, même zéro...

{5}' :... et répétez le motif précédent 5 fois.

Si vous voulez grep des lignes avec moins de 4 virgules, vous aurez besoin de :

grep -xE '([^,]*,){0,3}[^,]*' myfile

Cette fois, nous avons besoin de -x le motif est donc ancré au début et à la fin de la ligne afin qu'il corresponde à la ligne complète. Et nous utilisons [^,]* au lieu de .* car ce dernier correspondrait autrement avec bonheur aux chaînes contenant , s comme . correspond à tout caractère.

Une autre approche consiste à inverser avec -v l'approche précédente. "Moins que 4" équivaut à pas "au moins 4", donc :

grep -vE '(,.*){4}' myfile

Le awk version :

awk -F, 'NF > 5' myfile

Linux
  1. Avec la commande "cat" de Linux, comment afficher uniquement certaines lignes par numéro ?

  2. Comment Greper les lignes qui ne commencent pas par "#" ou ";" ?

  3. Comment compter le nombre de lignes dans un fichier sous Linux (exemples de commandes wc et nl)

  4. Comment limiter le nombre de résultats renvoyés par grep ?

  5. bash :comment passer des arguments de ligne de commande contenant des caractères spéciaux

Comment supprimer une ligne dans Vim sous Linux

Comment envoyer un ping à un numéro de port spécifique

Afficher les caractères spéciaux cachés dans Vim

Comment supprimer plusieurs lignes dans Vim

Compter le nombre total de correspondances avec grep au lieu du nombre de lignes qui correspondent

Grep :compte le nombre de correspondances par ligne