Come utilizzare il comando rev su Linux

Il comando rev di Linux inverte le stringhe di testo. Questo comando può funzionare sia sul testo fornito che su un file e sembra apparentemente semplice. Ma come molte utilità della riga di comando, il suo vero potere diventa evidente quando lo si combina con altri comandi.

Il comando rev è una di quelle semplici utilità Linux che, a prima vista, sembra essere qualcosa di strano. Svolge un’unica funzione: inverte le stringhe. E oltre a poter stampare una rapida pagina di aiuto (-h) e mostrarti il ​​suo numero di versione (-V), non accetta alcun opzioni della riga di comando.

Quindi, il giro inverte le stringhe, e basta? Nessuna variazione o opzione? Ebbene sì e no. Sì, non ha permutazioni, ma no, non è tutto. Questo tutorial mostra come combinarlo per operazioni potenti.

Quando usi rev come elemento costitutivo in sequenze di comandi più complicate, inizia davvero a mostrare il suo valore. rev è uno di un gruppo di comandi (come tac e yes) che sono facilitatori. È più facile apprezzarne l’utilità quando vedi come rendono più efficiente l’uso di altri comandi.

Utilizzando il comando rev

Utilizzato sulla riga di comando senza altri parametri, rev accetta qualsiasi input digitato, lo inverte e quindi lo stampa nella finestra del terminale. Continua a farlo finché non premi Ctrl + C per uscire.

rev

Se digiti del testo e premi Invio, rev stampa la stringa al contrario, a meno che tu non gli fornisca un palindromo, ovviamente.

Passaggio del testo alla rev

Puoi usare l’eco per convogliare il testo in rev.

echo one two three | rev

È inoltre possibile utilizzare rev per invertire il contenuto di un intero file di testo, riga per riga. In questo esempio, abbiamo un file contenente un elenco di nomi di file. Il file si chiama “filelist.txt”.

rev filelist.txt

Ogni riga viene letta dal file, invertita e quindi stampata nella finestra del terminale.

Combinazione di rev con altri comandi

Ecco un esempio che utilizza il piping di input che chiama rev due volte.

Questo comando rimuove l’ultimo carattere dalla stringa di testo. Questo potrebbe essere utile per rimuovere la punteggiatura. Dobbiamo usare il comando di taglio per spoglia il personaggio.

echo 'Remove punctuation.' | rev | cut -c 2- | rev

Analizziamolo.

echo invia la stringa nella prima chiamata a rev.
rev inverte la corda e la convoglia in taglio.
L’opzione -c (caratteri) dice a cut di restituire una sequenza di caratteri dalla stringa.
L’opzione 2- dice a cut di restituire l’intervallo di caratteri dal carattere due fino alla fine della riga. Se fosse fornito un secondo numero, ad esempio 2-5, l’intervallo sarebbe da due a cinque caratteri. Nessun secondo numero significa “fino alla fine della stringa”.
La stringa invertita, meno il suo primo carattere, viene passata a rev che inverte la stringa, quindi torna al suo ordine originale.

Poiché abbiamo tagliato il primo carattere della stringa invertita, abbiamo eliminato l’ultimo carattere della stringa originale. Sì, potresti farlo con sed o awk, ma questa è una sintassi più semplice.

Separare l’ultima parola

Possiamo usare un trucco simile per restituire l’ultima parola della riga.

Il comando è simile all’ultimo: di nuovo, usa rev due volte. Le differenze risiedono nel modo in cui il comando Taglia viene utilizzato per selezionare porzioni di testo.

echo 'Separate the last word' | rev | cut -d' ' -f1 | rev

Ecco la ripartizione dei comandi:

echo invia la stringa nella prima chiamata a rev.
rev inverte la corda e la convoglia in taglio.
L’opzione -d ” (delimitatore) dice a cut di restituire una sequenza di caratteri delimitata da uno spazio.
L’opzione -f1 dice a cut di restituire la prima sezione della stringa che non contiene il delimitatore. In altre parole, dalla prima parte della frase fino al primo spazio.
La prima parola invertita viene passata a rev che inverte la stringa, quindi torna al suo ordine originale.

Poiché abbiamo estratto la prima parola della stringa invertita, abbiamo tagliato l’ultima parola della stringa originale. L’ultima parola della frase era “parola” ed è stampata per noi.

Ritaglio di contenuto da file

Supponiamo di avere un file contenente un elenco di nomi di file e i nomi di file sono tra virgolette. Vogliamo rimuovere le virgolette dai nomi dei file.

Diamo un’occhiata al file:

less filelist.txt

I contenuti del file vengono visualizzati per noi in meno.

Contenuto di filenames.txt in less in una finestra di terminale.

Possiamo rimuovere la punteggiatura da entrambe le estremità di ogni riga con il seguente comando. Questo comando utilizza sia il giro che il taglio due volte.

rev filelist.txt | cut -c 2- | rev | cut -c 2-

I nomi dei file sono elencati per noi senza virgolette.

Nomi di file senza virgolette in una finestra di terminale.

Il comando si rompe in questo modo:

rev inverte le linee nel file e le convoglia in taglio.
L’opzione -c (caratteri) dice a cut di restituire una sequenza di caratteri da ogni riga.
L’opzione 2- dice a cut di restituire l’intervallo di caratteri dal carattere due fino alla fine di ogni riga.
Le stringhe invertite, meno i loro primi caratteri, vengono passate a rev.
rev inverte le stringhe, quindi tornano al loro ordine originale. Sono convogliati nel taglio una seconda volta.
L’opzione -c (caratteri) dice a cut di restituire una sequenza di caratteri da ogni stringa.
L’opzione 2- dice a cut di restituire l’intervallo di caratteri dal carattere due fino alla fine di ogni riga. Questo “salta sopra” la virgoletta iniziale, che è il carattere uno su ogni riga.

Un sacco di tubazioni

Ecco un comando che restituisce un elenco ordinato di ogni estensione di file nella directory corrente. Utilizza cinque distinti comandi Linux.

ls | rev | cut -d'.' -f1 | rev | sort | uniq

Il processo è semplice:

ls elenca i file nella directory corrente. Questi sono convogliati in rev.
rev inverte i nomi dei file e li convoglia in taglio.
cut restituisce la prima parte di ogni nome di file fino a un delimitatore. La -d ‘.’ dice a cut di usare il punto “.” come delimitatore. La parte dei nomi di file invertiti fino al primo punto sono le estensioni di file. Questi sono convogliati in rev.
rev inverte le estensioni dei file nel loro ordine originale. Sono convogliati in ordinamento.
sort ordina le estensioni dei file e convoglia i risultati in uniq.
uniq restituisce un unico elenco per ogni tipo di estensione di file univoca. Nota se non c’è l’estensione del file (come per il makefile e le directory Help e gc_help), viene elencato l’intero nome del file.

Per dare un tocco finale ad esso, aggiungi l’opzione della riga di comando -c (count) al comando uniq.

ls | rev | cut -d'.' -f1 | rev | sort | uniq -c

Ora otteniamo un elenco ordinato dei diversi tipi di file nella directory corrente con un conteggio di ciascuno.

È una battuta piuttosto elegante!

drawroF og ot drawkcaB gnioG

A volte devi tornare indietro per andare avanti. E di solito vai avanti più velocemente come parte di una squadra.

Aggiungi rev al tuo repertorio di comandi e presto lo utilizzerai per semplificare sequenze di comandi altrimenti complicate.