Puede utilizar varias -kmarcas para ordenar en más de una columna. Por ejemplo, para ordenar por apellido y luego el nombre como desempate:
sort -k 2,2 -k 1,1 file.txt
Opciones relevantes de "ordenar por hombre":
-k, --key = POS1 [, POS2]
iniciar una tecla en POS1, finalizarla en POS2 (origen 1)
POS es F [.C] [OPTS], donde F es el número de campo y C la posición del carácter en el campo. OPTS es una o más opciones de pedido de una sola letra, que anulan las opciones de pedido global para esa clave. Si no se da ninguna clave, utilice toda la línea como clave.
-t, --campo-separador = SEP
use SEP en lugar de transición de no blanco a blanco
Solo tenga un poco de cuidado al usarlo --field-separator=','si puede tener un operador de entrada de datos que ingrese valores para "Nombre" como "Billy Bob" o lo que sea ... los espacios pueden ingresar fácilmente a sus datos si no se protege contra ellos, pero las comas son relativamente poco probables.
Tony Delroy
1
Es muy probable que haya casos de comas en esos campos, como "Smith, Jr." o "McDowell, Sr." o "Dr. John" o "Nueva York, NY"
jbnunn
2
Tenga en cuenta que si las columnas están alineadas visualmente, es decir, hay un número no constante de espacios entre cada campo, debe utilizar la -bopción. Esto se debe a sortque, en realidad, se está considerando que la cadena a ordenar comienza justo después de la coma y no desde la primera letra de la columna. Además, es posible que deba anteponer el comando con LC_ALL=C, para evitar cualquier efecto secundario debido a la configuración regional, que puede suceder incluso en un archivo ASCII simple.
calandoa
@calandoa Gracias por la parte en -b( --ignore-leading-blanks). Para aclarar un poco: echo -e 'aa<SPACE>a\na<SPACE><SPACE>b' | sort -k2da a<SPACE><SPACE>bprimero (la segunda columna comienza después de la primera non-blank to blank transition, y <SPACE><SPACE>bes antes <SPACE>a), pero con -bda aa<SPACE>acomo se esperaba ( aes antes b).
Kirill Bulygin
7
Para ordenar solo por segundo campo (por lo tanto, donde los segundos campos coinciden, las líneas con coincidencias permanecen en el orden en que están en el original sin clasificar en otros campos):
FWIW, aquí hay un método de clasificación para mostrar qué procesos están usando más memoria virt.
memstat | sort -k 1 -t':' -g -r | less
Las opciones de clasificación se establecen en la primera columna, utilizando: como separador de columnas, clasificación numérica y clasificación a la inversa.
Respuestas:
Si es UNIX:
Puede utilizar varias
-k
marcas para ordenar en más de una columna. Por ejemplo, para ordenar por apellido y luego el nombre como desempate:Opciones relevantes de "ordenar por hombre":
fuente
--field-separator=','
si puede tener un operador de entrada de datos que ingrese valores para "Nombre" como "Billy Bob" o lo que sea ... los espacios pueden ingresar fácilmente a sus datos si no se protege contra ellos, pero las comas son relativamente poco probables.-b
opción. Esto se debe asort
que, en realidad, se está considerando que la cadena a ordenar comienza justo después de la coma y no desde la primera letra de la columna. Además, es posible que deba anteponer el comando conLC_ALL=C
, para evitar cualquier efecto secundario debido a la configuración regional, que puede suceder incluso en un archivo ASCII simple.-b
(--ignore-leading-blanks
). Para aclarar un poco:echo -e 'aa<SPACE>a\na<SPACE><SPACE>b' | sort -k2
daa<SPACE><SPACE>b
primero (la segunda columna comienza después de la primeranon-blank to blank transition
, y<SPACE><SPACE>b
es antes<SPACE>a
), pero con-b
daaa<SPACE>a
como se esperaba (a
es antesb
).Para ordenar solo por segundo campo (por lo tanto, donde los segundos campos coinciden, las líneas con coincidencias permanecen en el orden en que están en el original sin clasificar en otros campos):
fuente
FWIW, aquí hay un método de clasificación para mostrar qué procesos están usando más memoria virt.
memstat | sort -k 1 -t':' -g -r | less
Las opciones de clasificación se establecen en la primera columna, utilizando: como separador de columnas, clasificación numérica y clasificación a la inversa.
fuente
En consecuencia, puede cambiar el número de columna.
fuente