¿Cómo encontrar 5 "0" consecutivos en un archivo?

¿Cómo encontrar 5 "0" consecutivos en un archivo?

Tengo los siguientes datos en un archivo de texto:

Name,7/27,7/28,7/29,7/30,7/31,8/1,8/2,8/3,8/4
abc,5,3,8,8,0,0,2,0,11
def,6,7,0,0,0,0,0,2,5
ghi,1,3,5,2,0,0,5,3,6

Necesito saber qué archivo (la columna "Nombre", el nombre del archivo) da 5 0resultados consecutivos. En este ejemplo, eso sería def.

Respuesta1

Probablemente haría esto en awk, usando ,como delimitador:

$ awk -F, '/,0,0,0,0,0/{print $1}' file 
def

Sin embargo, eso también incluirá una línea como esta:

mno,6,7,0,0,0,0,0.5

Para evitar eso, haga coincidir solo si el último 0va seguido de a ,o el final de la línea:

awk -F, '/,0,0,0,0,0(,|$)/{print $1}' file 

Respuesta2

grep '0,0,0,0,0' file.txt

imprime la línea coincidente:def,6,7,0,0,0,0,0,2,5

grep '0,0,0,0,0' file.txt | cut -d, -f1

imprime el primer campo usando ,como delimitador:def

Respuesta3

Para obtener el resultado deseado, podemos probar los siguientes comandos.

ñu sed

$ sed -nE 'G;y/,/\n/;/(\n0){5}\n/P' file

$ awk -F, '/(,0){5}(,|$)/ && $0 =$1""' file

$ grep -oP '^[^,]+(?=.*?(,0){5}(,|$))' file 

Grep con el modo PC Re activado buscamos los cinco consecutivos ,0dentro de una búsqueda anticipada para que no se incluya en la bolsa de salida de grep.

Respuesta4

Sed puede hacer esto:

sed -n '/,0,0,0,0,0[,$]/p' file.txt | sed 's/,.*//'

información relacionada