A linha de impressão contém o valor máximo e mínimo

3

Eu preciso ler o arquivo (contém 16K linhas) e imprimir a linha inteira se qualquer uma das colunas e todas as colunas contiverem o valor máximo (100) e todas as colunas contiverem o valor mínimo (0) .O exemplo de saída é fornecido

input.txt (delimitado por tabulação)

Id sno1 sno2 sno3 sno4
E1 98   100  88   78
E2 33   99   78   66
E3 0     0   100  56
E4 0     0    0    0
E5 45   55   65   100
E6 0     0   99    88
E7 100 100  100   100

Ouput.txt

E1 98  100  88   78
E3 0    0   100   56
E4 0    0    0    0
E5 45   55   65   100
E7 100  100  100  100
    
por jack 03.08.2012 / 18:55

2 respostas

3

Algo parecido com isto [atualizado]?

perl -n -e 'if (/^\S+\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/) { print if $1==100||$2==100||$3==100||$4==100||($1==0&&$2==0&&$3==0&&$4==0) }' input.txt

Trabalhará também com colunas separadas por espaço.

    
por 03.08.2012 / 19:11
3

Também pode ser feito em awk :

awk '$2 ~ /^0$/ && $3 ~ /^0$/ && $4 ~ /^0$/ && $5 ~ /^0$/ || /100/' $file
    
por 03.08.2012 / 19:45