GNU/Linux >> Znalost Linux >  >> Linux

Spočítat počet řádků s řetězcem vyskytujících se Nkrát ve více sloupcích?

Mám několik stovek textových souborů sestávajících z pěti sloupců oddělených tabulátory. První sloupec obsahuje index a následující čtyři počet výskytů. Nyní bych chtěl spočítat počet řádků, které obsahují 3 sloupce s 0 (tj. 7 řádků v příkladu níže).

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

Mohu to kódovat jako smyčku v R, ale protože každý původní soubor obsahuje více než 60 milionů řádků, zajímalo by mě, jestli neexistuje řešení pomocí awk nebo sed a wc -l.

Přijatá odpověď:

Použití GNU sed:

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

Jak poukázal Isaac, pokud chceme počítat přesně 3, udělejte toto:

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

Linux
  1. Jak nahradit řetězec řetězcem obsahujícím lomítko se Sed?

  2. Sed:Smazat všechny výskyty řetězce kromě prvního?

  3. Jaký je nejlepší způsob, jak spočítat počet souborů v adresáři?

  1. Práce se sloupci – Awk a Sed?

  2. Jak spočítat počet řádků v souboru po zápase Grep?

  3. Jak napsat víceřádkový řetězec pomocí Bash s proměnnými?

  1. Jak nahradit řetězec ve více souborech v příkazovém řádku linuxu

  2. Jak mohu spočítat počet znaků v proměnné Bash

  3. nahradit řádky v jednom souboru řádky v jiném číslem řádku