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 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:
Reemplace
$0 != n+1con$0 <= npara verificar el aumento estricto por cualquier valor, no solo uno. Sin embargo, en ese caso, probablemente prefiera elsort -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 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