Mi imbatto spesso nella situazione in cui i dati parzialmente ordinati devono essere ordinati. La prima colonna è già ordinata, quelle successive non lo sono. Come in questo esempio di due colonne:
1 5
1 3
2 10
2 -1
2 3
3 11
3 -200
3 20
L'output desiderato è quello prodotto da
sort -k 1,1g -k 2,2g
che funziona ma ha il problema che nulla uscirà dall'ordinamento fino a quando non sarà stato letto tutto l'input. Quando l'input è di diversi gigabyte di testo, ciò può richiedere del tempo, durante il quale non può essere eseguito nulla a valle dell'ordinamento in una pipeline. Inoltre, non è molto efficiente in termini di utilizzo della memoria poiché l'intero set di dati deve risiedere immediatamente lì, anche se per ottenere l'ordinamento desiderato, solo una piccola parte deve davvero essere lì.
Con una sceneggiatura non sarebbe difficile suddividerla in blocchi e quindi ordinare ogni blocco. Il comando sort ha un'opzione da qualche parte per notificarlo che i dati in quella colonna sono già ordinati? Non lo vedo in ordine 8.4, ma forse mi è mancato?
Se l'ordinamento rileva un valore fuori ordine nella colonna, gli è stato detto che è già stato ordinato, dovrebbe uscire. Ciò indica un errore nell'elaborazione a monte.
g
? Nonn
sarebbe abbastanza?