Me gustaría probar si una lista de valores enteros (por ejemplo, almacenados en un archivo, uno por línea) está aumentando estrictamente, utilizando un script bash.
¿Hay alguna manera simple / concisa de lograr eso?
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 sort
puede 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).
sort
solució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:
Reemplace
$0 != n+1
con$0 <= n
para verificar el aumento estricto por cualquier valor, no solo uno. Sin embargo, en ese caso, probablemente prefiera elsort -c
enfoque 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 admitidossort
(como cuando su ordenación no no apoyo-g
)fuente
Con
awk
:para aumentar uno por línea. Para verificar la corriente es más grande que la anterior:
fuente
La versión extremadamente concisa sería algo como esto
Este código no conciso sería
fuente