Introdución
Nesta guía, vou amosarche como ordenar datos en ficheiros delimitados e da saída doutros comandos.
Non se sorprenderá de saber que o comando que usa para realizar esta tarefa chámase "ordenar". Todos os principais switches do comando sort serán fornecidos neste artigo.
Datos de mostra
Os datos dun ficheiro poden ser clasificados sempre que estean delimitados dalgunha forma.
Por exemplo, imos levar a última mesa da liga da Scottish Premier League o ano pasado e gardar os datos nun arquivo chamado "spl".
Podes crear un ficheiro de datos do seguinte xeito cun club e os datos deste club separáronse por comas en cada liña.
Equipo | Goles marcados | Goles en contra | Puntos |
---|---|---|---|
Celta | 93 | 31 | 86 |
Aberdeen | 62 | 48 | 71 |
Corazones | 59 | 40 | 65 |
St Johnstone | 58 | 55 | 56 |
Motherwell | 47 | 63 | 50 |
Condado de Ross | 55 | 61 | 48 |
Inverness | 54 | 48 | 52 |
Dundee | 53 | 57 | 48 |
Partick | 41 | 50 | 46 |
Hamilton | 42 | 63 | 43 |
Kilmarnock | 41 | 64 | 36 |
Dundee United | 45 | 70 | 28 |
Como ordenar datos en arquivos
Desde esa mesa, podes ver que o Celtic gañou a liga e Dundee United chegou o último. Se es un fan de Dundee United, quizais queiras sentarte mellor e podes facelo ordenando os goles marcados.
Para facelo executar o seguinte comando:
sort -k2 -t, spl
Esta vez a orde sería a seguinte:
- Partick
- Kilmarnock
- Hamilton
- Dundee United
- Motherwell
- Dundee
- Inverness
- Condado de Ross
- St Johnstone
- Corazones
- Aberdeen
- Celta
A razón pola que os resultados son nesta orde é que a columna 2 é a goleada marcada e o tipo vai desde a máis baixa ata a máis alta.
A opción -k permítelle escoller a columna para clasificar e o interruptor -t permite escoller o delimitador.
Para facerse realmente felices, os fanáticos de Dundee United poden clasificar pola columna 4 empregando o seguinte comando:
sort -k4 -t, spl
Agora, Dundee United está arriba e Celtic está na parte inferior.
Por suposto, isto faría que os fanáticos Celtic e Dundee fosen moi infelices. Para colocar as cousas correctamente pode ordenar en orde inversa usando o seguinte conmutador:
sort -k4 -t, -r spl
Un cambio bastante estraño permítelle ordenar aleatoriamente o que realmente só incorpora as liñas de datos.
Podes facelo usando o seguinte comando:
sort -k4 -t, -R spl
Isto podería causar problemas reais se mesturaches o teu -r eo teu interruptor -R.
O comando sort pode tamén ordenar datas en orde mes. Para demostrar, vexa a seguinte táboa:
Mes | Datos usados |
---|---|
xaneiro | 4G |
Febreiro | 3000 K |
Marzo | 6000 K |
Abril | 100M |
Maio | 5000M |
xuño | 200K |
Xullo | 4000 K |
Agosto | 2500 K |
Setembro | 3000 K |
Outubro | 1000K |
Novembro | 3G |
Decembro | 2G |
A táboa anterior representa o mes do ano ea cantidade de datos utilizados nun dispositivo móbil.
Pode ordenar as datas alfabéticamente empregando o seguinte comando:
ordenar-k1 -t, listados de datos
Tamén podes ordenar por mes usando o seguinte comando:
sort -k1 -t, -M datausedlist
Agora, obviamente, a táboa anterior xa mostra a mesma orde, pero se a lista estaba poboada aleatoriamente, esta sería unha forma sinxela de ordenalos.
Mirando á segunda columna pódese ver que todos os valores están nun formato lexíbel humano que non semella que sería fácil de ordenar, pero o comando sort pode ordenar a columna usada dos datos empregando o seguinte comando:
ordenar -k2 -t, -h listados de datos
Como ordenar os datos pasados dende outros comandos
Aínda que a clasificación de datos nos ficheiros é útil, o comando sort tamén se pode usar para ordenar a saída de outros comandos:
Por exemplo, mire o comando ls :
ls -lt
O comando anterior amosa cada ficheiro como unha liña de datos cos seguintes campos amosados en columnas:
- permisos
- reconto de nodos
- nome de usuario
- nome de grupo
- tamaño
- última data de acceso
- Nome de arquivo
Pode ordenar a lista por tamaño de ficheiro executando o seguinte comando:
ls -lt | ordenar -5
Para obter os resultados en orde inversa, usarías o seguinte comando:
ls -lt | sort -k5 -r
O comando sort tamén se pode usar xunto co comando ps que lista os procesos que se executan no seu sistema.
Por exemplo, execute o seguinte comando ps no seu sistema:
ps -eF
O comando anterior devolve moita información sobre os procesos que se executan actualmente no seu sistema.
Unha destas columnas é o tamaño e pode querer ver cales son os procesos máis importantes.
Para ordenar estes datos por tamaño usarías o seguinte comando:
ps -eF | ordenar -5
Resumo
Non hai moito para o comando de clasificación, pero pode ser útil de forma moi rápida cando se ordena a saída doutros comandos a un orde significativo especialmente cando o comando non ten os seus propios switches de tipo dispoñibles.
Para máis información, lea as páxinas de manual para o comando sort.