Como encontrar 5 “0” consecutivos no arquivo?

Como encontrar 5 “0” consecutivos no arquivo?

Eu tenho os seguintes dados em um arquivo 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

Preciso descobrir qual arquivo (a coluna "Nome" do nome do arquivo) está dando 5 consecutivos 0como saída. Neste exemplo, isso seria def.

Responder1

Eu provavelmente faria isso awk, usando ,como delimitador:

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

No entanto, isso também irá capturar uma linha como esta:

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

Para evitar isso, combine apenas se o último 0for seguido por a ,ou pelo final da linha:

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

Responder2

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

imprime a linha correspondente:def,6,7,0,0,0,0,0,2,5

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

imprime o primeiro campo usando ,como delimitador:def

Responder3

Para obter a saída desejada, podemos tentar os comandos abaixo.

Gnu sed

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

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

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

Grep com o modo PC Re ativado, procuramos os cinco consecutivos ,0dentro de um lookahead para que não seja incluído no saco de saída do grep.

Responder4

Sed pode fazer isso:

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

informação relacionada