En informática , sort es un programa de línea de comandos estándar de Unix y sistemas operativos similares a Unix , que imprime las líneas de su entrada o concatenación de todos los archivos enumerados en su lista de argumentos en orden ordenado. La clasificación se realiza en función de una o más claves de clasificación extraídas de cada línea de entrada. De forma predeterminada, toda la entrada se toma como clave de clasificación. El espacio en blanco es el separador de campo predeterminado. El comando admite una serie de opciones de línea de comandos que pueden variar según la implementación. Por ejemplo, la -r
bandera " " invertirá el orden de clasificación.
Autor (es) original (es) | Ken Thompson ( Laboratorios Bell de AT&T ) |
---|---|
Desarrollador (es) | Varios desarrolladores comerciales y de código abierto |
Versión inicial | 3 de noviembre de 1971 |
Sistema operativo | Multics , Unix , similar a Unix , V , Plan 9 , Inferno , MSX-DOS , IBM i |
Plataforma | Multiplataforma |
Tipo | Mando |
Licencia | coreutils : GPLv3 + |
Historia
Un sort
comando que invoca una función de ordenación general se implementó por primera vez dentro de Multics . [1] Más tarde, apareció en la versión 1 de Unix . Esta versión fue escrita originalmente por Ken Thompson en AT&T Bell Laboratories . En la versión 4, Thompson lo había modificado para usar tuberías , pero sort conservaba una opción para nombrar el archivo de salida porque se usaba para ordenar un archivo en su lugar. En la versión 5 , Thompson inventó "-" para representar la entrada estándar . [2]
La versión de sort incluida en GNU coreutils fue escrita por Mike Haertel y Paul Eggert. [3] Esta implementación emplea el algoritmo de clasificación por fusión .
Hay comandos similares disponibles en muchos otros sistemas operativos, por ejemplo, un tipo de comando es parte de ASCII 's Herramientas MSX-DOS2 para MSX-DOS versión 2. [4]
La El comando sort también se ha trasladado al sistema operativo IBM i . [5]
Sintaxis
ordenar [OPCIÓN] ... [ARCHIVO] ...
Con no FILE
, o cuando FILE
es -
, el comando lee desde la entrada estándar .
Parámetros
Nombre | Descripción | Unix | Plan 9 | Infierno | FreeBSD | Linux | MSX-DOS | IBM i |
---|---|---|---|---|---|---|---|---|
-b , --ignore-lead-espacios en blanco | Ignora los espacios en blanco iniciales. | sí | sí | No | sí | sí | No | sí |
-C | Compruebe que el archivo de entrada esté ordenado. | No | sí | No | sí | sí | No | sí |
-C | Como -c, pero no informa la primera línea incorrecta. | No | No | No | sí | sí | No | No |
-d , --orden-diccionario | Considera solo espacios en blanco y caracteres alfanuméricos. | sí | sí | No | sí | sí | No | sí |
-f , --ignore-case | Doble los caracteres de minúscula a mayúscula. | sí | sí | No | sí | sí | No | sí |
-g , --general-numeric-sort , --sort = general-numérico | Compara según el valor numérico general. | sí | sí | No | sí | sí | No | No |
-h , --human-numeric-sort , --sort = humano-numérico | Compare números legibles por humanos (por ejemplo, 2K 1G). | sí | No | No | sí | sí | No | No |
-i , --ignore-nonprinting | Considera solo caracteres imprimibles. | sí | sí | No | sí | sí | No | sí |
-k , --key = POS1 [, POS2 ] | Iniciar una llave en POS1 (origen 1), poner fin al POS2 (final predeterminado de la línea) | No | No | No | sí | sí | No | No |
-metro | Fusionar solo; Se supone que los archivos de entrada están preordenados. | No | sí | No | sí | sí | No | sí |
-M , --month-sort , --sort = mes | Compara (desconocido) <'JAN' <... <'DEC'. | sí | sí | No | sí | sí | No | No |
-n , --numeric-sort , --sort = numérico | Compara según el valor numérico de la cadena. | sí | sí | sí | sí | sí | No | sí |
-o SALIDA | Utiliza un archivo de SALIDA en lugar de una salida estándar. | No | sí | No | sí | sí | No | sí |
-r , - reverso | Invierte el resultado de las comparaciones. | sí | sí | sí | sí | sí | No | sí |
-R , --ordenar aleatorio , --sort = aleatorio | Mezcla, pero agrupa claves idénticas. Véase también: shuf | sí | No | No | sí | sí | No | No |
-s | Estabiliza la ordenación desactivando la comparación de último recurso. | No | No | No | sí | sí | No | No |
-S tamaño , --buffer-size = tamaño | Utilice tamaño para el tamaño máximo del búfer de memoria. | No | No | No | sí | No | No | No |
-tx | El 'carácter de tabulación' que separa los campos es x. | No | sí | No | No | sí | No | sí |
-t char , --field-separator = char | Utiliza char en lugar de transición de no blanco a blanco. | No | No | No | sí | sí | No | No |
-T dir , --temporary-directory = dir | Utiliza dir para provisionales. | No | sí | No | sí | sí | No | No |
-u , --unique | Procesamiento único para suprimir todos menos uno en cada conjunto de líneas con claves iguales. | No | sí | No | sí | sí | No | sí |
-V , --version-sort | Tipo natural de números (de versión) dentro del texto | No | No | No | sí | sí | No | No |
-w | Como -i, pero ignora solo las tabulaciones y los espacios. | No | sí | No | No | No | No | No |
-z , - terminada en cero | Líneas finales con 0 bytes, no nueva línea | No | No | No | sí | sí | No | No |
--ayuda | Mostrar ayuda y salir | No | No | No | sí | sí | No | No |
--versión | Salida de información de versión y salida | No | No | No | sí | sí | No | No |
/ R | Invierte el resultado de las comparaciones. | No | No | No | No | No | sí | No |
/S | Especifique el número de dígitos para determinar cuántos dígitos de cada línea deben juzgarse. | No | No | No | No | No | sí | No |
/A | Ordenar por código ASCII. | No | No | No | No | No | sí | No |
/ H | Incluya archivos ocultos cuando utilice comodines. | No | No | No | No | No | sí | No |
Ejemplos de
Ordenar un archivo en orden alfabético
$ guía telefónica del gato Smith, Brett 555-4321 Doe, John 555-1234 Doe, Jane 555-3214 Avery, Cory 555-4132 Fogarty, Suzie 555-2314
$ ordenar directorio telefónico Avery, Cory 555-4132 Doe, Jane 555-3214 Doe, John 555-1234 Fogarty, Suzie 555-2314 Smith, Brett 555-4321
Ordenar por número
La -n
opción hace que el programa se ordene según el valor numérico. La El comando du produce una salida que comienza con un número, el tamaño del archivo, por lo que su salida se puede canalizar a sort para producir una lista de archivos ordenados por tamaño de archivo (ascendente):
$ du / bin / * | sort -n 4 / bin / nombre de dominio 24 / bin / ls 102 / bin / sh 304 / bin / csh
Columnas o campos
Utilice la -k
opción para ordenar en una columna determinada. Por ejemplo, use " -k 2
" para ordenar en la segunda columna. En versiones antiguas de sort, la +1
opción hacía que el programa ordenara en la segunda columna de datos ( +2
para la tercera, etc.). Este uso está desaprobado.
$ cat código postal Adam 12345 Bob 34567 Joe 56789 Sam 45678 Wendy 23456
$ sort -k 2n código postal Adam 12345 Wendy 23456 Bob 34567 Sam 45678 Joe 56789
Ordenar en varios campos
La -k m,n
opción le permite ordenar por una clave que potencialmente se compone de varios campos (comenzar en la columna m
, terminar en la columna n
):
$ cuota de gato fred 2000 bob 1000 an 1000 chad 1000 don 1500 eric 500
$ sort -k2,2n -k1,1 cuota eric 500 an 1000 bob 1000 chad 1000 don 1500 fred 2000
Aquí, la primera clasificación se realiza utilizando la columna 2. -k2,2n
Especifica la clasificación en la clave que comienza y termina con la columna 2, y la clasificación numérica. Si -k2
se usa en su lugar, la clave de clasificación comenzaría en la columna 2 y se extendería hasta el final de la línea, abarcando todos los campos intermedios. -k1,1
dicta romper empates usando el valor en la columna 1, ordenando alfabéticamente por defecto. Tenga en cuenta que bob y chad tienen la misma cuota y están ordenados alfabéticamente en el resultado final.
Clasificación de un archivo delimitado por tuberías
$ ordenar -k2,2, -k1,1 -t '|' código postal Adam | 12345 Wendy | 23456 Sam | 45678 Joe | 56789 Bob | 34567
Ordenar un archivo delimitado por tabuladores
Ordenar un archivo con valores separados por tabulaciones requiere que se especifique un carácter de tabulación como delimitador de columna. Esta ilustración utiliza dólar-cita la notación de la cáscara [6] [7] para especificar la pestaña como una secuencia C de escape .
$ sort -k2,2 -t $ '\ t' directorio telefónico Doe, John 555-1234 Fogarty, Suzie 555-2314 Doe, Jane 555-3214 Avery, Cory 555-4132 Smith, Brett 555-4321
Ordenar al revés
La -r
opción simplemente invierte el orden de clasificación:
$ sort -rk 2n código postal Joe 56789 Sam 45678 Bob 34567 Wendy 23456 Adam 12345
Ordenar al azar
La implementación de GNU tiene una -R --random-sort
opción basada en hash; esta no es una mezcla aleatoria completa porque clasificará líneas idénticas juntas. La utilidad shuf de Unix proporciona una verdadera ordenación aleatoria .
Ordenar por versión
La implementación de GNU tiene una -V --version-sort
opción que es un tipo natural de números (de versión) dentro del texto. Esto pasa a funcionar para direcciones IP.
Ver también
- Colación
- Lista de comandos de Unix
- uniq
- shuf
Referencias
- ^ "Comandos de Multics" . www.multicians.org .
- ^ McIlroy, MD (1987). Un lector de investigación Unix: extractos comentados del Manual del programador, 1971–1986 (PDF) (Informe técnico). CSTR. Bell Labs. 139.
- ^ "sort (1): ordena líneas de archivos de texto - página de manual de Linux" . linux.die.net .
- ^ "Manual de usuario de herramientas MSX-DOS2 - HERRAMIENTAS MSX-DOS2 ユ ー ザ ー ズ マ ニ ュ ア ル" . 1 de abril de 1993 - a través de Internet Archive.
- ^ IBM . "IBM System i Versión 7.2 Programación Qshell" (PDF) . Consultado el 5 de septiembre de 2020 .
- ^ "El Manual de referencia de GNU Bash, para Bash, versión 4.2: Sección 3.1.2.4 Citas ANSI-C" . Free Software Foundation, Inc. 28 de diciembre de 2010 . Consultado el 1 de febrero de 2013 .
Las palabras de la forma $ 'cadena' se tratan especialmente. La palabra se expande a una cadena, con los caracteres de escape con barra invertida reemplazados según lo especificado por el estándar ANSI C.
- ^ Fowler, Glenn S .; Korn, David G .; Vo, Kiem-Phong. "Preguntas frecuentes de KornShell" . Archivado desde el original el 27 de mayo de 2013 . Consultado el 3 de marzo de 2015 .
La sintaxis literal de cadena $ '...' se agregó a ksh93 para resolver el problema de ingresar caracteres especiales en los scripts. Utiliza reglas ANSI-C para traducir la cadena entre '...'.
Otras lecturas
- Shotts (hijo), William E. (2012). La línea de comandos de Linux: una introducción completa . Sin prensa de almidón . ISBN 978-1593273897.
- McElhearn, Kirk (2006). La línea de comandos de Mac OS X: Unix Under the Hood . John Wiley e hijos . ISBN 978-0470113851.
enlaces externos
- Página de manual de Original Sort Página de manual del programa BSD Unix original
- - Manual de comandos de usuario de Linux
- - Manual del programador de Plan 9 , Volumen 1
- - Manual de comandos generales de Inferno
- Más detalles sobre sort en Softpanorama