Voglio basicamente l'equivalente diQuali comandi standard posso utilizzare per stampare in modo efficiente solo le prime righe dell'output ordinato sulla riga di comando?
... | sort -arg1 -arg2 -... | head -n $k
ma, la mia comprensione è quella sorta andrà O (n registro n) su tutta d'ingresso. Nel mio caso ho a che fare con molti dati, quindi il runtime conta per me - e ho anche l'abitudine di traboccare il mio tmp/cartella con i file temporanei di ordinamento.
avrei preferito andare O (n registro k) utilizzando per esempio un heap, che presumibilmente andrebbe più veloce, e che riduce anche la memoria del working set a k.
Esiste qualche combinazione di strumenti da riga di comando standard in grado di farlo in modo efficiente, senza che io debba codificare qualcosa da solo? Idealmente sosterrebbe la piena potenza espressiva del comando sort. sort (su Ubuntu almeno) sembra non avere alcun interruttore documentato in man-page per estrarlo ...
hai confrontato il tubo sopra? Quanto è veloce e quanto velocemente hai bisogno di essere? –
non hanno benchmark; ma questo è esplorativo su vari dataset (cioè ogni volta che è un uno spento, quindi sono sulla riga di comando in attesa che finisca), e aneddoticamente posso andare per decine di minuti su gigabyte di input - specialmente heinous quando tmp/trabocca vicino alla fine. Presumo solo che ci sia un modo migliore. Posso aggirare il tmp/overflow tagliando l'input, ordinando ciascuno e usando head/tail per decimare i dati, e ricombinandoli in un passaggio finale; ma questa è una seccatura enorme da fare se c'è un solo rivestimento disponibile. – jdowdell
Hai considerato l'utilizzo di un linguaggio progettato per esplorare set di dati, come R? –