Amministratore Linux: ordina comando
sortha diverse ottimizzazioni per l'ordinamento in base ai tipi di dati. Il comando is scrive la concatenazione ordinata di tutti i file sullo standard output. Tuttavia, siate stanchi, complesse operazioni di ordinamento su file di grandi dimensioni di pochi GigaByte possono ostacolare le prestazioni del sistema.
Quando si esegue un server di produzione con CPU e / o disponibilità di memoria limitate, si consiglia di scaricare questi file più grandi su una workstation per l'ordinamento delle operazioni durante le ore lavorative di punta.
Interruttore | Azione |
---|---|
-b | Ignora le righe vuote iniziali |
-d | Ordine del dizionario, considera solo spazi e caratteri alfanumerici |
-f | Ignora i caratteri maiuscoli, minuscoli e maiuscoli |
-g | Ordinamento numerico generale |
-M | Ordinamento per mese |
-h | Ordinamento numerico leggibile dall'uomo 1 KB, 1 MB, 1 GB |
-R | Ordinamento casuale |
-m | Unisci file già ordinati |
Sentiti libero di copiare il testo tabulare qui sotto e segui i nostri esempi di ordinamento. Assicurati che ogni colonna sia separata da un carattere di tabulazione.
nome di battesimo | cognome | ufficio |
---|---|---|
Ted | Daniel | 101 |
Jenny | Colon | 608 |
Dana | Maxwell | 602 |
Marian | Piccolo | 903 |
Bobbie | Chapman | 403 |
Nicolas | Singleton | 203 |
Dale | Barton | 901 |
Aaron | Dennis | 305 |
Santos | Andrews | 504 |
Jacqueline | Neal | 102 |
Billy | Crawford | 301 |
Rosa | Summers | 405 |
Kellie | Curtis | 903 |
opaco | Davis | 305 |
Gina | Carr | 902 |
Francisco | Gilbert | 101 |
Sidney | Mack | 901 |
Heidi | Simmons | 204 |
Cristina | Torres | 206 |
Sonya | Tessitore | 403 |
Donald | Evans | 403 |
Gwendolyn | Camere | 108 |
Antonia | Lucas | 901 |
Blanche | Hayes | 603 |
Carrie | Todd | 201 |
Terence | Anderson | 501 |
Joan | Parsons | 102 |
Rosa | Pescatore | 304 |
Malcolm | Matthews | 702 |
Utilizzando sort nella sua forma più semplice e predefinita -
[[email protected] centos]# sort ./Documents/names.txt
Aaron Dennis 305
Antonia Lucas 901
Billy Crawford 301
Blanche Hayes 603
Bobbie Chapman 403
Carrie Todd 201
Cristina Torres 206
Dale Barton 901
Dana Maxwell 602
Donald Evans 403
Francisco Gilbert 101
Gina Carr 902
Gwendolyn Chambers 108
Heidi Simmons 204
Jacqueline Neal 102
Jenny Colon 608
Joan Parsons 102
Kellie Curtis 903
Malcolm Matthews 702
Marian Little 903
Matt Davis 305
Nicolas Singleton 203
Rosa Summers 405
Rose Fisher 304
Santos Andrews 504
Sidney Mack 901
Sonya Weaver 403
Ted Daniel 101
Terence Anderson 501
[[email protected] centos]#
A volte, vorremo ordinare i file su un'altra colonna, diversa dalla prima colonna. Un ordinamento può essere applicato ad altre colonne con l'estensione-t e -k interruttori.
-t : define a file delimiter
-k : key count to sort by (think of this as a column specified from the delimiter.
-n : sort in numeric order
Note- In alcuni esempi, abbiamo usato cat in pipe in grep. Questo per dimostrare i concetti dei comandi di piping. L'output di cat in grep può aumentare il carico di sistema centinaia di volte con file di grandi dimensioni, aggiungendo allo stesso tempo un ordinamento complesso. Questo farà rabbrividire gli amministratori Linux veterani.
Ora che abbiamo una buona idea di come funziona il personaggio della pipa, questa cattiva pratica sarà evitata nei capitoli a seguire. La chiave per mantenere basse le risorse di sistema con comandi come sort, è imparare a usarli in modo efficiente.
[[email protected] centos]# sort -t ' ' -k 3n ./Documents/names.txt
Ted Daniel 101
Francisco Gilbert 101
Jacqueline Neal 102
Joan Parsons 102
Gwendolyn Chambers 108
Carrie Todd 201
Nicolas Singleton 203
Heidi Simmons 204
Cristina Torres 206
Billy Crawford 301
Rose Fisher 304
Aaron Dennis 305
Matt Davis 305
Bobbie Chapman 403
Donald Evans 403
Sonya Weaver 403
Rosa Summers 405
Terence Anderson 501
Santos Andrews 504
Dana Maxwell 602
Blanche Hayes 603
Jenny Colon 608
Malcolm Matthews 702
Antonia Lucas 901
Dale Barton 901
Sidney Mack 901
Gina Carr 902
Kellie Curtis 903
Marian Little 903
[[email protected] centos]#
Ora abbiamo la nostra lista ordinata per numero di ufficio. Il lettore astuto noterà qualcosa fuori dall'ordinario dopo il-tinterruttore; virgolette singole separate da quelli che sembrano essere pochi spazi. Questo era in realtà un carattere di tabulazione letterale inviato alla shell. Una Tab letterale può essere inviata alla shell BASH utilizzando la combinazione di tasti di:control+Tab+v.
La maggior parte delle shell interpreterà il tasto Tab come un comando. Ad esempio, il completamento automatico in BASH. La shell necessita di una sequenza di escape per riconoscere un carattere di tabulazione letterale. Questo è uno dei motivi per cui le tabulazioni non sono la scelta migliore per i delimitatori con Linux. In generale, è meglio evitare sia spazi che tabulazioni, poiché possono causare problemi durante lo script di una shell.
Cerchiamo di correggere il nostro file names.txt.
[[email protected] centos]# sed -i 's/\t/:/g' ./Documents/names.txt &&
cat ./Documents/names.txt
Ted:Daniel:101
Jenny:Colon:608
Dana:Maxwell:602
Marian:Little:903
Bobbie:Chapman:403
Nicolas:Singleton:203
Dale:Barton:901
Aaron:Dennis:305
Santos:Andrews:504
Jacqueline:Neal:102
Billy:Crawford:301
Rosa:Summers:405
Kellie:Curtis:903:
Matt:Davis:305
Gina:Carr:902
Francisco:Gilbert:101
Sidney:Mack:901
Heidi:Simmons:204
Cristina:Torres:206
Sonya:Weaver:403
Donald:Evans:403
Gwendolyn:Chambers:108
Antonia:Lucas:901
Blanche:Hayes:603
Carrie:Todd:201
Terence:Anderson:501
Joan:Parsons:102
Rose:Fisher:304
Malcolm: Matthews:702
[[email protected] centos]#
Ora sarà molto più facile lavorare con il file di testo. Se qualcuno richiede che venga restituito a Tab delimitato per un'altra applicazione (questo è comune), possiamo eseguire facilmente tale compito come:
sed -i 's/:/\t/g' ./Documents/names.txt
Le comuni applicazioni per utenti finali funzioneranno bene con le tabulazioni come delimitatore (un contabile non vuole vedere i due punti che separano le colonne di dati, mentre lavora sui fogli di calcolo). Quindi imparare a trasformare i personaggi avanti e indietro è una buona pratica; viene fuori spesso.
Note- Office utilizza elaboratori di testi e fogli di calcolo con un'interfaccia utente grafica, in esecuzione su Windows. Quindi, è comune per gli amministratori Linux diventare bravi a completare le azioni di trasformazione, accomodando gli utenti finali dell'ufficio (la maggior parte delle volte, il nostro capo sarà un utente finale).
È stato introdotto un comando chiamato sed. sed è un editor di flussi e può essere utilizzato come editor di testo non interattivo per manipolare flussi di testo e file. Più avanti impareremo di più su sed. Tuttavia, tieni presente che per ora, usando sed, abbiamo evitato la necessità di reindirizzare diversi comandi di filtro durante la modifica del nostro file di testo. Così, facendo l'uso più efficiente degli strumenti a portata di mano.
Abbiamo anche introdotto un operatore shell Bash: && . && eseguirà il secondo comando solo se il primo comando viene completato con uno stato di successo "0".
[[email protected] centos]# ls /noDir && echo "You cannot see me"
ls: cannot access /noDir: No such file or directory
[[email protected] centos]# ls /noDir ; echo "You cannot see me"
ls: cannot access /noDir: No such file or directory
You cannot see me
[[email protected] centos]# ls /noDir ; echo "You cannot see me"
Nel codice sopra, nota la differenza tra && e;? Il primo eseguirà il secondo comando solo quando il primo è stato completato correttamente, mentre; concatena semplicemente i comandi. Maggiori informazioni su questo quando arriveremo allo scripting dei comandi della shell.