Perl-Lösung:
perl -ne 'print if tr/,// > 4'
-n
liest 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