Perl-Lösung:
perl -ne 'print if tr/,// > 4'
-nliest die Datei Zeile für Zeile- der tr-Operator gibt die Anzahl der Übereinstimmungen zurück.
Um die Zeilen mit weniger als 4 zu drucken, ändern Sie einfach > bis < .
Mit grep Befehl:
grep -E '(,.*){5}' myfile
macht den Job. Erklärung:
-E :einen erweiterten Regex verwenden...
'(,.*) :... um ein Komma zu finden, gefolgt von einer beliebigen Anzahl von Zeichen, sogar Null...
{5}' :... und das vorherige Muster 5 Mal wiederholen.
Wenn Sie Zeilen mit weniger als 4 Kommas grepen möchten, benötigen Sie:
grep -xE '([^,]*,){0,3}[^,]*' myfile
Dieses Mal brauchen wir -x Das Muster wird also sowohl am Anfang als auch am Ende der Linie verankert, sodass es mit der vollständigen Linie übereinstimmt. Und wir verwenden [^,]* statt .* da letzteres ansonsten glücklich mit Zeichenfolgen übereinstimmen würde, die , enthalten s als . stimmt mit beliebig überein Zeichen.
Ein anderer Ansatz ist die Umkehrung mit -v der bisherige Ansatz. "Weniger als 4" ist dasselbe wie nicht "mindestens 4", also:
grep -vE '(,.*){4}' myfile
Die awk Version:
awk -F, 'NF > 5' myfile