Tente isto:
$ echo "65 6 25 2014 176 8 20 2 7671912 7849744 201 10" |
awk 'FNR == NR { a[$1]; next }
{
for (i = 9; i <= NF; i += 2) {
if (!($i in a)) {
flag = 1;
}
}
if (flag) {
print "CORRUPTED";
} else {
print "AVAILABLE";
}
}
' file -
CORRUPTED
file
contém todos os seus valores numéricos para comparar. Você deve substituir echo "65 6 25 2014 176 8 20 2 7671912 7849744 201 10"
deste teste pelo script que imprime a linha anterior onde o arquivo contém um único token.
Explicação
-
FNR == NR { a[$1]; next }
: ao processarfile
, salvamos cada número emfile
em uma matriza
. - Depois de ler
file
, percorremos todos os campos ímpares, começando no campo9th
, se o valor do campo não estiver na matriza
, definimosflag = 1
. - Finalmente, se
flag
estiver definido como 1, significa que temos pelo menos um campo cujo valor não está emfile
, por isso, imprimimosCORRUPTED
, caso contrário, imprimaAVAiLABLE
.