GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie grep Zeilen, die mehr als eine bestimmte Anzahl von Sonderzeichen enthalten

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

Linux
  1. So zählen Sie die Anzahl der Zeilen in einer Datei unter Linux (wc- und nl-Befehlsbeispiele)

  2. Wie begrenze ich die Anzahl der von grep zurückgegebenen Ergebnisse?

  3. Wie verkettet man mehrere Ausgabezeilen zu einer Zeile?

  4. So verwenden Sie Lookahead, um Sonderzeichen in einem regulären Ausdruck auszuschließen

  5. Zählen der Gesamtzahl der Übereinstimmungen mit grep statt nur wie viele Zeilen übereinstimmen

So löschen Sie eine Zeile in Vim unter Linux

So pingen Sie eine bestimmte Portnummer an

Versteckte Sonderzeichen in Vim anzeigen

So löschen Sie mehrere Zeilen in Vim

Wie tippe ich Sonderzeichen unter Linux ein?

bash:wie man Befehlszeilenargumente mit Sonderzeichen übergibt