Trova & Sostituisci testo in più documenti dalla riga di comando
Se sei a tuo agio con la riga di comando e ti trovi sempre in una situazione in cui devi trovare e sostituire una parola, una frase, un URL o un carattere in un gruppo di più documenti di testo, perl fa il lavoro abbastanza bene. Una semplice stringa di comando eseguirà molto rapidamente una ricerca e sostituzione batch di gruppo sul testo, sia in un singolo documento che in un gruppo di più documenti.
Come molte cose nella riga di comando, non esiste un processo di conferma, quindi ti consigliamo di assicurarti che la tua sintassi sia impostata correttamente prima di avviare un comando, altrimenti potresti dover eseguire un' altra ricerca e sostituzione per correggere il tuo errore di battitura.
La sintassi di comando di base è la seguente: perl -pi -w -e 's/QUESTO/QUELLO/g;' /percorso/dei/file.txt
Per un esempio di una sola parola, se devi sostituire tutte le occorrenze di "ogre" con "cornbread" in ogni file .txt all'interno della cartella "Documenti", utilizzare il seguente comando:
perl -pi -w -e 's/ogre/cornbread/g;' ~/Documenti/.txt
Per un esempio di ricerca e sostituzione di un'intera frase, supponiamo di sostituire l'intera frase "La fabbrica di cioccolato ” con “Il mago di Oz” in un gruppo di file .txt che iniziano con “Films” archiviati nella directory Documenti:
perl -pi -w -e 's/La fabbrica di cioccolato/Il mago di Oz/g;' ~/Documenti/Film.txt
La ricerca e la sostituzione vengono eseguite immediatamente. Puoi ricontrollare la modifica usando cat e grep per verificare:
cat ~/Documents/Films124.txt |grep Il mago di Oz"
Certo, questo è abbastanza avanzato e sì, la ricerca e la sostituzione in batch attraverso più documenti può essere eseguita in modo più intuitivo tramite app GUI come TextWrangler e BBEdit, ma a volte la riga di comando è solo più veloce per attività rapide come questa e altre simili, inoltre non richiede alcun download aggiuntivo per l'utilizzo.
Un grande complimento a Lifehacker per l'eccellente trucco.
Aggiorna: Il comando 'sed' è un altro modo per eseguire una rapida ricerca e sostituzione attraverso la riga di comando. La copertura di sed è principalmente un argomento per un altro articolo, ma la sintassi di base dell'utilizzo di sed per questo compito è un po' più semplice e quindi più facile da ricordare:
sed -i 's/THIS/THAT/g' /path/to/files.txt
Non esiste un modo giusto o sbagliato, quindi usare perl o sed diventa una questione di preferenze personali.