UNIX bash - Como comparar valores da mesma coluna?

-1

Eu tenho um arquivo onde gostaria de comparar se cada conjunto de 4 valores da coluna 2 forem iguais.

Isso faz parte do meu arquivo input.txt :

1        493733  
2        493733  
3        493733  
4        493733  
1        546328  
2        546328  
3        546328  
4        546328

Eu preciso de um script para comparar os valores da coluna 2 das primeiras 4 linhas:

1        493733  
2        493733  
3        493733  
4        493733  

Em seguida, pule para as próximas 4 linhas (... até o final do arquivo - o comprimento pode variar):

 1        546328  
 2        546328  
 3        546328  
 4        546328 

Os números na coluna 2 devem ser os mesmos a cada 4 linhas, mas às vezes há um diferente que eu preciso pegar.

Se os números corresponderem, envie algum tipo de mensagem. Se algum desses números não corresponder, envie um arquivo .log para ser verificado.

    
por A.V 30.01.2018 / 14:51

1 resposta

0

Isso deve funcionar:

file="input.txt"
log_file="some.log"

num_lines=$(wc -l < "$file")
for i in 'seq 0 $(bc<<<$num_lines/4)'; do
    FIRST_LINE=$(bc<<<"$i*4+1")
    SECOND_LINE=$(bc<<<"$i*4+2") 
    if [ "$(awk NR==$FIRST_LINE "$file")" == "$(awk NR==$SECOND_LINE "$file")" ];
    then
        echo "some kind of message"
    else
        echo "Lines $FIRST_LINE and $SECOND_LINE do not match" | tee -a "$log_file"
    fi
done
    
por RoVo 30.01.2018 / 16:50