GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cuenta el número de filas con una cadena que aparece N veces en varias columnas?

Tengo varios cientos de archivos de texto que consisten cada uno en cinco columnas delimitadas por tabulaciones. La primera columna contiene un índice y las cuatro siguientes el recuento de ocurrencias. Ahora me gustaría contar el número de filas que contienen 3 columnas con 0 (es decir, 7 filas en el ejemplo a continuación).

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

Puedo codificar esto como un bucle en R, pero como los archivos originales contienen cada uno más de 60 millones de filas, me pregunto si no hay una solución alternativa con awk o sed y wc -l.

Respuesta aceptada:

Usando GNU sed:

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

Como señaló Isaac, si queremos contar exactamente 3, hagamos esto:

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

Linux
  1. ¿Solo devolver la cadena coincidente en Sed?

  2. ¿Cómo reemplazar una cadena con una cadena que contiene una barra oblicua con Sed?

  3. Sed:¿Eliminar todas las apariciones de una cadena excepto la primera?

  4. ¿Cuál es la mejor manera de contar el número de archivos en un directorio?

  5. ¿Cómo crear un bucle for con un número variable de iteraciones?

Reemplace las comillas tipográficas con el comando sed de Linux

Manipulación de texto en la línea de comando con sed

5 formas de contar el número de líneas en un archivo

Usando múltiples patrones a la vez con el comando Sed

¿Cómo contar la cantidad de bytes en un archivo, agrupando los mismos bytes?

reemplazar líneas en un archivo con líneas en otro por número de línea