Solution Perl :
perl -ne 'print if tr/,// > 4'
-nlit 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