
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 0
resultados 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 0
va 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 ,0
dentro 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/,.*//'