linux - script - Clasificando en bash
bash scripting (2)
Mía:
cut -f <column_number> <filename> | sort | uniq -c | awk ''{ print $2" "$1}'' | sort
Esto alterará el orden de las columnas (awk) y luego solo ordenará la salida.
Espero que esto te ayudará
He intentado obtener los valores únicos en cada columna de un archivo delimitado por tabulaciones en bash. Entonces, utilicé el siguiente comando.
cut -f <column_number> <filename> | sort | uniq -c
Funciona bien y puedo obtener los valores únicos en una columna y su cuenta como
105 Linux
55 MacOS
500 Windows
Lo que quiero hacer es ordenar los nombres de los valores de columna (que en este ejemplo son nombres de sistema operativo). Quiero ordenarlos por conteo y posiblemente tener el recuento en la segunda columna en este formato de salida. Entonces tendrá que verse así:
Windows 500
MacOS 105
Linux 55
¿Cómo hago esto?
Utilizar:
cut -f <col_num> <filename>
| sort
| uniq -c
| sort -r -k1 -n
| awk ''{print $2" "$1}''
La sort -r -k1 -n
ordena en orden inverso, utilizando el primer campo como valor numérico. El awk
simplemente invierte el orden de las columnas. Puede probar los comandos agregados de la tubería así (con un formato más agradable):
pax> echo ''105 Linux
55 MacOS
500 Windows'' | sort -r -k1 -n | awk ''{printf "%-10s %5d/n",$2,$1}''
Windows 500
Linux 105
MacOS 55