Tredici strumenti utili per lavorare con il testo da linea di comando

Strumenti di testo Linux Command Line Featured

Le distribuzioni GNU/Linux includono una vasta gamma di programmi per gestire il testo, la maggior parte dei quali è fornita dalle utilità di base GNU. C’è una certa curva di apprendimento, ma queste utilità possono rivelarsi molto utili ed efficienti se utilizzate correttamente.

Ecco tredici potenti strumenti di manipolazione del testo che ogni utente della linea di comando dovrebbe conoscere.

1. cat

Cat è stato progettato per unire file, ma viene più spesso utilizzato per visualizzare un singolo file. Senza argomenti, cat legge l’input standard fino a quando non viene premuto Ctrl + D (dal terminale o dall’output di un altro programma se si utilizza una pipe). L’input standard può anche essere specificato esplicitamente con un -.

Cat ha una serie di opzioni utili, in particolare:

  • -A stampa “$” alla fine di ogni riga e visualizza caratteri non stampabili utilizzando la notazione caret.
  • -n numera tutte le righe.
  • -b numera le righe che non sono vuote.
  • -s riduce una serie di righe vuote a una sola riga vuota.

Nell’esempio seguente, stiamo concatenando e numerando i contenuti di file1, input standard e file3.

cat -n file1 - file3

Strumenti di testo Linux Cat

2. sort

Come suggerisce il nome, sort ordina i contenuti dei file in modo alfabetico e numerico.

Strumenti di testo Linux Sort

3. uniq

Uniq prende un file ordinato e rimuove le righe duplicate. Viene spesso concatenato con sort in un unico comando.

Strumenti di testo Linux Uniq

4. comm

Comm è utilizzato per confrontare due file ordinati, riga per riga. Restituisce tre colonne: le prime due colonne contengono righe uniche rispettivamente al primo e al secondo file, mentre la terza visualizza quelle trovate in entrambi i file.

Strumenti di testo Linux Comm

5. cut

Cut viene utilizzato per recuperare sezioni specifiche di righe, basate su caratteri, campi o byte. Può leggere da un file o da input standard se non viene specificato alcun file.

Taglio per posizione dei caratteri

L’opzione -c specifica una singola posizione di carattere o uno o più intervalli di caratteri.

Per esempio:

  • -c 3: il 3° carattere.
  • -c 3-5: dal 3° al 5° carattere.
  • -c -5 o -c 1-5: dal 1° al 5° carattere.
  • -c 5-: dal 5° carattere fino alla fine della riga.
  • -c 3,5-7: il 3° e dal 5° al 7° carattere.

Strumenti di testo Linux Cut Char

Taglio per campo

I campi sono separati da un delimitatore costituito da un singolo carattere, specificato con l’opzione -d. L’opzione -f seleziona una posizione di campo o uno o più intervalli di campi utilizzando lo stesso formato di sopra.

Strumenti di testo Linux Cut Field

6. dos2unix

GNU/Linux e Unix terminano normalmente le righe di testo con un’interruzione di linea (LF), mentre Windows utilizza il ritorno a capo e interruzione di linea (CRLF). Possono sorgere problemi di compatibilità quando si gestisce testo CRLF su Linux, ed è qui che entra in gioco dos2unix. Converte i terminatori CRLF in LF.

Nell’esempio seguente, il comando file viene utilizzato per controllare il formato del testo prima e dopo l’uso di dos2unix.

Strumenti di testo Linux Dos2unix

7. fold

Per facilitare la lettura e la gestione di lunghe righe di testo, puoi utilizzare fold, che avvolge le righe a una larghezza specificata.

Fold corrisponde rigorosamente alla larghezza specificata per impostazione predefinita, interrompendo le parole dove necessario.

fold -w30 longline.txt

Strumenti di testo Linux Fold

Se l’interruzione delle parole non è desiderabile, puoi usare l’opzione -s per interrompere negli spazi.

fold -w30 -s longline.txt

Strumenti di testo Linux Fold Spaces

8. iconv

Questo strumento converte il testo da una codifica all’altra, utile quando si ha a che fare con codifiche insolite.

iconv -f input_encoding -t output_encoding -o output_file input_file
  • “input_encoding” è la codifica da cui stai convertendo.
  • “output_encoding” è la codifica in cui stai convertendo.
  • “output_file” è il nome del file in cui iconv salverà i dati.
  • “input_file” è il nome del file da cui iconv leggerà.

Nota: puoi elencare le codifiche disponibili con iconv -l

9. sed

Sed è un editor di flusso potente e flessibile, comunemente utilizzato per trovare e sostituire stringhe con la seguente sintassi.

Il seguente comando leggerà dal file specificato (o dall’input standard), sostituendo le parti di testo che corrispondono al modello di espressione regolare con la stringa di sostituzione e restituendo il risultato al terminale.

sed s/pattern/replacement/g nomefile

Per modificare invece il file originale, puoi usare il flag -i.

Strumenti di testo Linux Sed

10. wc

L’utilità wc stampa il numero di byte, caratteri, parole o righe in un file.

Strumenti di testo Linux Wc

11. split

Puoi usare split per dividere un file in file più piccoli, per numero di righe, per dimensione, o in un numero specifico di file.

Divisione per numero di righe

split -l num_lines input_file output_prefix

Strumenti di testo Linux Split Lines

Divisione per byte

split -b bytes input_file output_prefix

Strumenti di testo Linux Split Bytes

Divisione in un numero specifico di file

split -n num_files input_file output_prefix

12. tac

Tac, che è cat al contrario, fa esattamente questo: visualizza i file con le righe in ordine inverso.

Strumenti di testo Linux Tac

13. tr

Lo strumento tr viene utilizzato per tradurre o eliminare insieme di caratteri.

Un insieme di caratteri è solitamente una stringa o intervalli di caratteri. Ad esempio:

  • “A-Z”: tutte le lettere maiuscole
  • “a-z0-9”: lettere minuscole e cifre
  • “\n[:punct:]”: caratteri di nuova riga e punteggiatura

Consulta la pagina man di tr per maggiori dettagli.

Per tradurre un insieme in un altro, usa la seguente sintassi:

tr SET1 SET2

Ad esempio, per sostituire caratteri minuscoli con il loro equivalente maiuscolo, puoi usare il seguente comando:

tr "a-z" "A-Z"

Strumenti di testo Linux Tr

Per eliminare un insieme di caratteri, utilizza il flag -d.

tr -d SET

Per eliminare il complementare di un insieme di caratteri (cioè tutto tranne l’insieme), usa -dc.

tr -dc SET

Conclusione

C’è molto da imparare quando si tratta della linea di comando Linux. Speriamo che i comandi sopra possano aiutarti a gestire meglio il testo nella linea di comando.