Como ordenar datos nun ficheiro usando Linux

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:

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:

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.