Usa l sort' -kopzione per ordinare per (più) colonne contemporaneamente:
$ sort -k1,1 -k2n input
A 1-2
A 3-4
A 6-8
B 5-9
B 7-10
-k1,1ordina prima la prima colonna, poi -k2nnumericamente la seconda¹ quando la prima colonna era legata, in modo da ottenere l'output nell'ordine desiderato: ordinamento in base al primo elemento della seconda colonna, solo se il primo elemento della colonna è lo stesso.
Quando si ordina numericamente, esaminerà il campo solo fino a quando non smette di essere un numero, in modo che ti dia un confronto solo del primo elemento di esso.
Quando le due chiavi si confrontano allo stesso modo, sortconfronta le righe complete in modo lessicale come confronto di ultima istanza. Ad esempio in A 1-10vs A 1-2, le prime chiavi sono identiche ( Astringa), e anche la seconda chiave (entrambe sono trattate come il numero 1), quindi sortconfronta A 1-10vs A 1-2lessicamente e quest'ultima è maggiore come 2ordinamento dopo 1. L'implementazione GNU di sortha -Vun'opzione o Vun flag chiave per eseguire un ordinamento di versione , che è come un confronto lessicale, tranne per il fatto che le sequenze di cifre decimali all'interno delle stringhe vengono confrontate numericamente, quindi sort -k1,1 -k2Vverranno ordinate A 1-10dopo A 1-2perché 10un numero è maggiore di 2.
¹ tecnicamente, -k2indica la parte della linea che inizia con il secondo campo (dopo la prima transizione da un non vuoto a uno vuoto) e termina alla fine della linea, ma con la nbandiera, equivale a -k2,2nsolo la parte iniziale che costituisce un numero è considerato.