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.