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

Zählen Sie die Anzahl der Zeilen mit einer Zeichenfolge, die N-mal in mehreren Spalten vorkommt?

Ich habe mehrere hundert Textdateien, die jeweils aus fünf tabulatorgetrennten Spalten bestehen. Die erste Spalte enthält einen Index und die folgenden vier die Anzahl der Vorkommen. Jetzt möchte ich die Anzahl der Zeilen, die 3 Spalten enthalten, mit 0 zählen (also 7 Zeilen im Beispiel unten).

1   0   0   0   9
2   0   9   0   0
3   10  0   0   0
4   0   10  4   0
5   0   0   0   10
6   0   0   0   10
7   0   0   0   10
8   0   10  0   0
9   5   0   5   0

Ich kann dies als Schleife in R codieren, aber da die Originaldateien jeweils über 60 Millionen Zeilen enthalten, frage ich mich, ob es keine Problemumgehung mit awk oder sed und wc -l gibt.

Akzeptierte Antwort:

Mit GNU sed:

sed -E 's/\t0\>/&/3;t;d' file  | wc -l

Wie Isaac darauf hingewiesen hat, wenn wir genau 3 zählen wollen, tun Sie dies:

sed -n 's/\t0\>//4;t;s//&/3p' file | wc -l

Linux
  1. Mehrere Muster gleichzeitig mit dem Sed-Befehl verwenden

  2. Was ist der beste Weg, um die Anzahl der Dateien in einem Verzeichnis zu zählen?

  3. Arbeiten mit Spalten – Awk und Sed?

  4. Wort am Zeilenende mit Sed anhängen?

  5. Wie zähle ich die Anzahl der Zeilen in einer Datei nach einem Grep-Match?

5 Möglichkeiten, die Anzahl der Zeilen in einer Datei zu zählen

Sed:Alle Vorkommen einer Zeichenfolge außer der ersten löschen?

Wie erstelle ich eine For-Schleife mit einer veränderbaren Anzahl von Iterationen?

Wie kann ich die Anzahl der Zeichen in einer Bash-Variablen zählen?

Verwenden von sed zum Teilen einer Zeichenfolge mit einem Trennzeichen

Wie kann man die Anzahl der Bytes in einer Datei zählen und dieselben Bytes gruppieren?