Modifiche "al volo" di un file di testo

Trucchi e escamotage in tutte le salse
Rispondi
Avatar utente
Martyn
Amministratore
Messaggi: 165
Iscritto il: 20/11/2013, 4:40
Località: Pianeta Terra
Contatta:

Modifiche "al volo" di un file di testo

Messaggio da Martyn »

Salve a tutti,
vi è mai capitato di dover modificare "al volo" un file di testo (che ne so, aggiungere una virgola oppure sostituire un testo) usando la riga di comando? No?
Bene, qui potete scoprire un "trucco" per poter modificare i file di testo "al volo" senza aprire nessun editor di testo.
Scrivete questo semplice comando concatenato che aggiungerà una virgola alla fine di ogni parola del vostro file:

Codice: Seleziona tutto

cat test.txt | sed "s/$/,/" > test-modificato.txt
Cosa è successo?
In pratica, il file chiamato test.txt viene letto da cat e (di solito) ne invia il contenuto al monitor, MA... ma, invece che mandare l'output al monitor, viene catturato dal pipe ( il simbolo | ) e rigira l'output a sed, un "editor di flusso" che ne elabora il flusso (streaming) e lo modifica secondo le opzioni date dal parametro "s/../../" (virgolette comprese). Questo parametro dice: « sostituisci (valore s) tutto quello che c'è tra la prima barra e la seconda barra (slash) con tutto quello che si trova tra la seconda barra e la terza». Bene! C'è una opzione in più che è $. Questo dice a sed che incontrerà un valore prima della sostituzione, il valore è casuale, e che deve ignorarlo e aggiungere alla fine di quel valore la sostituzione. Così aggiunge, dopo ogni valore, la virgola (o qualsiasi cosa avete messo tra le due barre traverse).

Il comando "sed" è un comando potentissimo, può effettuare mille altre operazioni simili ed essere un vero alleato in script e sequenze di lavoro (routine). Per maggiori informazioni potete trovare un valido aiuto nel comando "man".

Enjoy! :mrgreen: :geek: :ugeek:
Coltivate Linux e l'Open Source. Windows si pianta già da solo! :mrgreen: :mrgreen: :mrgreen:
Rispondi