Cerca & Substitueix el text en diversos documents des de la línia d'ordres

Anonim

Si us trobeu còmode amb la línia d'ordres i alguna vegada en una situació en què necessiteu trobar i substituir una paraula, frase, URL o caràcter en un grup de diversos documents de text, perl fa la feina força bé. Una simple cadena d'ordres realitzarà molt ràpidament una cerca i substitució per lots de grup al text, ja sigui en un sol document o en un grup de diversos documents.

Com moltes coses a la línia d'ordres, no hi ha cap procés de confirmació, així que voldreu assegurar-vos que la vostra sintaxi estigui configurada correctament abans d'iniciar una ordre, en cas contrari, és possible que hàgiu de fer una altra cerca i substitució. per reparar el teu error ortogràfic.

La sintaxi de l'ordre bàsica és la següent: perl -pi -w -e 's/THIS/THAT/g;' /camí/a/fitxers.txt

Per a un exemple d'una sola paraula, si necessiteu substituir totes les instàncies d'"ogre" per "blat de moro" a cada fitxer .txt dins de la carpeta "Documents", utilitzareu l'ordre següent:

perl -pi -w -e 's/ogre/cornbread/g;' ~/Documents/.txt

Per a un exemple de trobar i substituir una frase sencera, suposem que substituirem la frase sencera “La fàbrica de xocolata ” amb “El mag d'Oz” en un grup de fitxers .txt que comencen per “Films” emmagatzemats al directori Documents:

perl -pi -w -e 's/La fàbrica de xocolata/El mag d'Oz/g;' ~/Documents/Pel·lícules.txt

La cerca i substitució es fa immediatament. Podeu comprovar el canvi fent servir cat i grep per comprovar:

"

cat ~/Documents/Films124.txt |grep El mag d&39;Oz"

Sens dubte, això és bastant avançat, i sí, la cerca i substitució per lots a través de diversos documents es pot fer d'una manera més fàcil d'utilitzar mitjançant aplicacions GUI com TextWrangler i BBEdit, però de vegades la línia d'ordres és més ràpida. per a tasques ràpides com aquesta i altres similars, a més, no requereix cap descàrrega addicional per utilitzar-la.

Una gran felicitació a Lifehacker per l'excel·lent truc.

Actualització: L'ordre 'sed' és una altra manera de fer una cerca i substitució ràpida a través de la línia d'ordres. Cobrir sed és principalment un tema per a un altre article, però la sintaxi bàsica d'utilitzar sed per a aquesta tasca és una mica més senzilla i, per tant, més fàcil de recordar:

sed -i 's/THIS/THAT/g' /path/to/fitxers.txt

No hi ha una manera correcta o incorrecta, així que si feu servir perl o sed esdevé una qüestió de preferència personal.

Cerca & Substitueix el text en diversos documents des de la línia d'ordres