Respuestas:
Compruebe si el contenido del archivo permanece igual después de ordenar numéricamente y filtrar líneas duplicadas:
cmp file <(sort -n file | uniq)
Al menos GNU sortpuede hacer esta verificación directamente:
sort -c -u -n file
(La documentación POSIX tambiénsort menciona esto, por lo que debería ser compatible en todas partes).
sortsolución parece perfecta.
Si quiere decir, compruebe que cada línea es un entero decimal que es uno más el entero decimal en la línea anterior, luego:
awk 'NR == 1 {n = $0; next}
$0 != n+1 {status = 1; exit}
{n = $0}
END {exit status}'
Reemplace $0 != n+1con $0 <= npara verificar el aumento estricto por cualquier valor, no solo uno. Sin embargo, en ese caso, probablemente prefiera el sort -cenfoque a menos que desee que deje de leer en el primer trastorno o desee admitir formatos de número (hexadecimal, notación de coma flotante ...) no admitidos sort(como cuando su ordenación no no apoyo -g)
La versión extremadamente concisa sería algo como esto
#!/bin/bash
awk 'NR > 1 && $1 < prev { printf( "error at line %d\n", NR); exit; } { prev = $1 } ' $1
Este código no conciso sería
#!/bin/bash
l=1 #line number count
p=0 #previous line value
for f in `cat $1`
do
if [ \( "$f" -lt "$p" \) -a \( "$l" -ne "1" \) ] #chk for all lines, except first
then echo "$f is less than $p on Line $l"
break
else
p=$f #set previous
fi
l=$(expr $l + 1) #increment line number
done