Come usare i comandi cat e tac di Linux

Contenuti

Arte di una finestra di terminale su un desktop Linux

il cat e tac I comandi visualizzano il contenuto dei file di testo, ma c'è di più in loro di quanto sembri. Immergiti un po' più a fondo e impara alcuni trucchi produttivi della riga di comando di Linux.

Questi sono due semplici piccoli comandi, che sono spesso respinti per essere proprio questo: troppo semplice per essere di reale utilità. Ma una volta che conosci i diversi modi in cui puoi usarli, Vedrai che sono straordinariamente capaci di fare la loro giusta parte del lavoro pesante quando si tratta di lavorare con i file..

Il comando del gatto

cat è usato per sfoglia il contenuto dei file di testoe unire parti di file per formare un file più grande.

In un momento, nell'era del dial-up modem: I file binari erano spesso divisi in diversi file più piccoli per un facile download. Invece di scaricare un file di grandi dimensioni, tirato ogni file più piccolo. Se un singolo file non è stato scaricato correttamente, Vorrei solo recuperare quel file.

Certo, quindi avevo bisogno di un modo per ricostituire la raccolta di file più piccoli in un singolo file binario funzionante. Quella procedura si chiamava concatenazione. Ed è lì che cat è entrato e da dove prende il nome?.

Le connessioni a banda larga e in fibra hanno fatto svanire quella particolare esigenza, proprio come i suoni stridenti delle telefonate, così, Cosa resta? cat da fare oggi? Molto in realtà.

Visualizzazione di un file di testo

Avere cat elencare il contenuto di un file di testo in una finestra di terminale, usa il seguente comando.

Assicurati che il file sia un file di testo. Se provi a elencare il contenuto di un file binario nella finestra del terminale, i risultati saranno imprevedibili. Puoi finire con una sessione terminale bloccata o peggio.

gatto poesia1.txt

Il contenuto del file poem1.txt viene visualizzato nella finestra del terminale.

Questa è solo metà della famosa poesia. Dov'è il resto?? Ecco un altro file chiamato poem2.txt. possiamo fare cat elenca il contenuto di più file con un comando. Tutto quello che faremo è elencare i file in ordine sulla riga di comando.

gatto poesia1.txt poesia2.txt

Sembra meglio; ora abbiamo la poesia completa.

Usa il gatto con meno

La poesia è tutta lì, Ma è passato dalla finestra troppo in fretta per leggere i primi versi. Possiamo incanalare l'output da cat entro less e scorri il testo al nostro ritmo.

gatto poesia1.txt poesia2.txt | meno

Ora possiamo andare avanti e indietro attraverso il testo in sequenza, anche se è in due file di testo separati.

Numerazione delle righe in un file

Possiamo avere il numero di gatto delle righe nel file così come viene visualizzato. Per fare questo, noi usiamo il -n opzione (numero).

cat -n poesia1.txt

Le righe sono numerate così come vengono visualizzate nella finestra del terminale.

Non numerare le righe vuote

Siamo riusciti ad avere le righe numerate da cat, ma si contano anche le righe vuote tra i versi. Per avere le righe di testo numerate ma ignorare le righe vuote, usa el -b Opzione (numero non vuoto).

cat -b poesia1.txt

Ora le righe di testo sono numerate e le righe vuote vengono saltate.

Non visualizzare più righe vuote

Se ci sono sezioni di righe vuote consecutive in un file, possiamo chiedere cat ignorare tutte le righe vuote tranne una. Guarda questo file.

Il seguente comando causerà cat per visualizzare solo una riga vuota da ogni gruppo di righe vuote. L'opzione di cui abbiamo bisogno per raggiungere questo obiettivo è la -s (spazio bianco).

cat -s poesia1.txt

Ciò non influisce in alcun modo sul contenuto del file; cambia solo la forma cat mostra il file.

Schede di visualizzazione

Se vuoi sapere se gli spazi sono causati da spazi o tabulazioni, puoi scoprirlo usando il -T opzione (mostra-schede).

cat -T poesia1.txt

Le schede sono rappresentate dai caratteri "^ I".

Visualizzazione della fine delle righe

Puoi controllare gli spazi vuoti finali usando il -E Opzione (lo spettacolo finisce).

cat -E poesia1.txt

Los finales de las líneas están representados por el carácter “$”.

Concatena file

Non ha senso salvare una poesia in due file, con metà in ciascuno. Uniamoci a loro e creiamo un nuovo file con la poesia completa.

gatto poesia1.txt poesia2.txt > jabberwocky.txt

usiamo cat per controllare il nostro nuovo file:

gatto jabberwocky.txt

Il nostro nuovo file contiene il contenuto degli altri due file.

Aggiungi testo a un file esistente

Quello è meglio, ma veramente, non è la poesia completa. Manca l'ultimo verso. L'ultimo verso di Jabberwocky è lo stesso del primo verso.

Se abbiamo il primo verso in un file, possiamo aggiungerlo alla fine del file jabberwocky.txt e avremo la poesia completa.

In questo prossimo comando, dobbiamo usare >>, Non solo >. Se ne usiamo solo uno > Buona Sovrascrivi jabberwocky.txt. Non vogliamo farlo. Vogliamo allegare testo alla fine.

gatto primo_verso.txt >> jabberwocky.txt

Rivediamo il contenuto del file jabberwocky.txt:

gatto jabberwocky.txt

E per finire, tutte le parti della poesia sono insieme.

Ridirigi stdin

Puoi reindirizzare l'input della tastiera a un file usando cat. Tutto ciò che digiti viene reindirizzato al file finché non premi Ctrl + D. Si prega di notare che ne usiamo solo uno > perché vogliamo creare il file (o sovrascrivilo, se esiste).

gatto > mia_poesia.txt

Possiamo iniziare a digitare non appena diamo il comando. Premiamo Ctrl + D quando abbiamo finito. Successivamente possiamo verificare il contenuto del nuovo file con:

gatto mia-poesia.txt

Quel suono come una turbina lontana è probabilmente Lewis Carroll che gira nella sua tomba ad alta velocità.

Il comando tac

tac è simile a cat, ma elenca il contenuto dei file in ordine inverso.

Vediamo che:

tac mia_poesia.txt

E il file viene visualizzato nella finestra del terminale in ordine inverso. In questa circostanza, non ha alcun effetto sui tuoi meriti letterari.

Usare tac con stdin

Usando tac senza un nome di file lo farà funzionare con l'input da tastiera. Premendo Ctrl + D fermerà lo stadio di ingresso, e tac elencherà in ordine inverso ciò che hai digitato.

tac

Quando si preme Ctrl + D, l'ingresso è invertito e visualizzato nella finestra del terminale.

Utilizzo di tac con i file di registro

A parte gli espedienti da salotto di bassa qualità, Maggio tac fai qualcosa di utile? sì, può. Molti file di registro aggiungono le voci più recenti alla fine del file. Usando tac (e, controintuitivamente, head) possiamo mostrare l'ultima voce nella finestra del terminale.

Noi usiamo tac per elencare il file syslog all'indietro e reindirizzarlo a head. conteggio head per stampare solo la prima riga che riceve (che grazie a tac è l'ultima riga del file), vediamo l'ultima voce nel file syslog.

tac / var / log / syslog | testa -1

head stampa l'ultima voce nel file syslog e poi esce.

Notare che head sta stampando solo una riga, come richiediamo, ma la linea è così lunga che si avvolge due volte. Questo è il motivo per cui sembrano tre righe di output nella finestra del terminale.

Usa tac con i record di testo

L'ultimo trucco tac ha un asso nella manica è una bellezza.

In genere, tac operare su file di testo lavorandoci riga per riga, dal basso verso l'alto. Una riga è una sequenza di caratteri terminata da un nuovo carattere di riga. Ma possiamo dire tac per lavorare con altri delimitatori. Esto nos posibilita tratar “frammenti” de datos dentro del archivo de texto como registros de datos.

Diciamo che abbiamo un file di registro di qualche programma che dobbiamo rivedere o analizzare.. Diamo un'occhiata al suo formato con less.

meno logfile.dat

Come possiamo vedere, esiste un formato ripetuto per il file. Ci sono sequenze di tre righe di esadecimale valori. Ogni set di tre linee esadecimali ha uno slogan che inizia con "= SEQ", seguito da una sequenza di cifre.

Se scorriamo fino alla fine del file, possiamo vedere che ci sono molti di questi record. L'ultimo ha il numero 865.

Supponiamo, per qualsiasi ragione, dobbiamo lavorare con questo file in ordine inverso, registro dati per registro dati. L'ordine delle tre righe esadecimali di ogni record di dati deve essere mantenuto.

Noteremo che le ultime tre righe del file iniziano con i valori esadecimali 93, Mi7 e Si8, in questo ordine.

Usiamo tac per invertire il file. È un file molto lungo, quindi lo canalizzeremo a less.

tac logfile.dat | meno

Questo inverte il file, ma non è il risultato che vogliamo. Vogliamo che il file venga invertito, ma le righe di ogni record di dati devono essere nell'ordine originale.

Abbiamo precedentemente registrato che le ultime tre righe del file iniziano con i valori esadecimali 93, Mi7 e Si8, in questo ordine. L'ordine di quelle righe è stato invertito. Allo stesso tempo, las líneas= SEQahora son sotto ogni set di tre linee esagonali.

tac Al salvataggio.

tac -b -r -s ^=SEQ.+[0-9]+*$ logfile.dat | meno

Analizziamolo.

il -s L'opzione (separatore) informa tac cosa vogliamo usare come delimitatore tra i nostri record. Dado tac non usare il tuo frequente carattere di nuova riga, ma usa invece il nostro separatore.

il -r (regex) opzione dice tac trattare la catena di separazione come a frase normale.

il -b (prima) cause di opzione tac per elencare il separatore prima ogni record invece che dopo di esso (che è la posizione frequente del tuo separatore predefinito, il carattere di nuova riga).

il -s (separatore) catena ^=SEQ.+[0-9]+*$ viene decifrato come segue:

il ^ il carattere rappresenta l'inizio della riga. Questo è seguito =SEQ.+[0-9]+*$. Questo istruisce tac para buscar cada aparición de= SEQ”. all'inizio di una riga, seguito da qualsiasi sequenza di cifre (indicato da [0-9]), e seguito da qualsiasi altro set di caratteri (indicato da *$).

Stiamo canalizzando tutto in less, come sempre.

file di registro invertito con record di dati formati correttamente

Nuestro archivo ahora se presenta en orden inverso con cada línea de etiqueta= SEQlistada prima le tue tre righe di dati esadecimali. Le tre righe di valori esadecimali sono nella loro originale ordine all'interno di ogni record di dati.

Possiamo verificarlo semplicemente. Il primo valore delle prime tre linee di esadecimale (quali erano le ultime tre righe prima che il file fosse annullato) corrisponde ai valori da cui abbiamo preso un record precedente: 93, Mi7 e Si8, in questo ordine.

È un bel trucco per una finestra di terminale a riga singola.

Tutto ha uno scopo

Nel mondo di Linux, Anche i comandi e le utilità apparentemente semplici possono avere proprietà sorprendenti e potenti..

La filosofia del design di Simple Utilities fanno bene una cosa, e che interagiscono facilmente con altre utilità, ha portato ad alcuni strani piccoli comandi, Che cosa tac. A prima vista, sembra un po' strano. Ma quando guardi sotto la superficie, c'è un potere inaspettato che puoi sfruttare a tuo vantaggio.

oh, come dice un'altra filosofia, “No desprecies a la serpiente por no tener cuernos, perché chi può dire che non si trasformerà in drago?”

impostaTimeout(funzione(){
!funzione(F,B,e,v,n,T,S)
{Se(f.fbq)Restituzione;n=f.fbq=funzione(){n.callMethod?
n.callMethod.apply(n,argomenti):n.queue.push(argomenti)};
Se(!f._fbq)f._fbq = n;n.push=n;n.loaded=!0;n.version='2.0′;
n.coda=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(T,S) } (window, documento,'copione',
'https://connect.facebook.net/en_US/fbevents.js');
fbq('dentro', '335401813750447');
fbq('traccia', 'Visualizzazione della pagina');
},3000);

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.