GNU/Linux >> Linux Esercitazione >  >> Linux

Contare il numero di righe con una stringa che si verifica N volte in più colonne?

Ho diverse centinaia di file di testo costituiti ciascuno da cinque colonne delimitate da tabulazioni. La prima colonna contiene un indice e le successive quattro il conteggio delle occorrenze. Ora vorrei contare il numero di righe che contengono 3 colonne con 0 (cioè 7 righe nell'esempio seguente).

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

Posso codificarlo come un ciclo in R, ma poiché i file originali contengono ciascuno oltre 60 milioni di righe, mi chiedo se non ci sia una soluzione alternativa con awk o sed e wc -l.

Risposta accettata:

Utilizzando GNU sed:

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

Come sottolineato da Isaac, se vogliamo contare 3 esatti, allora fai questo:

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

Linux
  1. Sostituisci le virgolette intelligenti con il comando sed di Linux

  2. Manipolazione del testo da riga di comando con sed

  3. Utilizzo di più modelli contemporaneamente con il comando Sed

  4. Come sostituire una stringa con una stringa contenente una barra con Sed?

  5. Sed:eliminare tutte le occorrenze di una stringa tranne la prima?

5 modi per contare il numero di righe in un file

Come contare il numero di righe in un file dopo una corrispondenza Grep?

Come scrivere più stringhe di righe usando Bash con variabili?

Come sostituire una stringa in più file nella riga di comando di Linux

Utilizzo di sed per dividere una stringa con un delimitatore

sostituire le righe in un file con le righe in un altro per numero di riga