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

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:
-Astampa “$” alla fine di ogni riga e visualizza caratteri non stampabili utilizzando la notazione caret.-nnumera tutte le righe.-bnumera le righe che non sono vuote.-sriduce 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
2. sort
Come suggerisce il nome, sort ordina i contenuti dei file in modo alfabetico e numerico.

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

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.

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 -5o-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.

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.

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.

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
Se l’interruzione delle parole non è desiderabile, puoi usare l’opzione -s per interrompere negli spazi.
fold -w30 -s longline.txt
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 nomefilePer modificare invece il file originale, puoi usare il flag -i.

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

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
Divisione per byte
split -b bytes input_file output_prefix
Divisione in un numero specifico di file
split -n num_files input_file output_prefix12. tac
Tac, che è cat al contrario, fa esattamente questo: visualizza i file con le righe in ordine inverso.

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 SET2Ad esempio, per sostituire caratteri minuscoli con il loro equivalente maiuscolo, puoi usare il seguente comando:
tr "a-z" "A-Z"
Per eliminare un insieme di caratteri, utilizza il flag -d.
tr -d SETPer eliminare il complementare di un insieme di caratteri (cioè tutto tranne l’insieme), usa -dc.
tr -dc SETConclusione
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.