una scripts script operaciones manejo eliminar ejemplos comandos comando caracteres cadenas cadena aritmeticas bash sorting alphanumeric

operaciones - scripts bash ejemplos



Ordenando cadenas con nĂºmeros en Bash (3)

Creo que esta es una extensión de GNU para sort , pero estás buscando la opción --version-sort (o -V ):

$ printf "prefix%d/n" $(seq 10 -3 1) prefix10 prefix7 prefix4 prefix1 $ printf "prefix%d/n" $(seq 10 -3 1) | sort prefix1 prefix10 prefix4 prefix7 $ printf "prefix%d/n" $(seq 10 -3 1) | sort --version-sort prefix1 prefix4 prefix7 prefix10

https://www.gnu.org/software/coreutils/manual/html_node/sort-invocation.html

A menudo he querido ordenar cadenas con números para que, al ordenar, por ejemplo abc_2, abc_1, abc_10 el resultado sea abc_1, abc_2, abc_10 . Cada mecanismo de ordenamiento que he visto ordena como abc_1, abc_10, abc_2 , es decir carácter por carácter desde la izquierda.

¿Hay alguna forma eficiente de ordenar para obtener el resultado que quiero? La idea de mirar a cada personaje, determinar si es un número, construir una subcadena de los números subsiguientes y clasificarlo como un número es demasiado espantoso para contemplar en bash .

¿No ha implementado barbudo * nix guru una versión alternativa de sort con una opción --sensible_numerical ?


Ejecute esto

sort -t _ -k 2 -g data.file

  • -t separador
  • -k clave / columna
  • -g tipo numérico general

Prueba esto

$ cat a.txt abc_1 abc_4 abc_2 abc_10 abc_5 $ sort -V a.txt abc_1 abc_2 abc_4 abc_5 abc_10