Compare dois arquivos e retorne um valor verdadeiro ou falso

2

Eu tenho dois arquivos com uma coluna.
Se as primeiras linhas nos dois arquivos forem iguais, imprima 1, caso contrário, imprima 0.

file1 :

M
A
A
M

file2 :

M
M
A
A

output :

1
0
1
0

Alguém pode me mostrar um script awk que faria isso?

    
por Rincy Raphael 26.05.2014 / 08:26

2 respostas

4

Tente isto:

$ awk '!NF{next} FNR==NR{a[FNR]=$1;next};{print $1==a[FNR]  ? 1 : 0}' file1 file2
1
0
1
0

Explicação

  • !NF{next} : não precisamos de linhas em branco, pule-a.
  • FNR==NR{a[FNR]=$1;next} : enquanto processamos file1 , salvamos seu primeiro campo em array associativo, com index é o número da linha.
  • {print $1==a[FNR] ? 1 : 0} : enquanto processamos file2 , verificamos se o primeiro valor do campo é igual ao valor file1 correspondente, que foi salvo na matriz associativa a . Se sim imprimir 1, imprima 0.
por 26.05.2014 / 09:25
3
paste file1 file2 | while read a b; do [[ $a != "$b" ]]; echo $?; done

o comando [[ retorna um status 0 após sucesso e 1 em falha.

    
por 27.05.2014 / 00:16