Zoeken & Vervang tekst in meerdere documenten vanaf de opdrachtregel

Anonim

Als u vertrouwd bent met de opdrachtregel en u zich ooit in een situatie bevindt waarin u een woord, woordgroep, URL of teken in een groep van meerdere tekstdocumenten moet zoeken en vervangen, doet perl het werk redelijk goed. Met een eenvoudige opdrachtreeks kan heel snel een groepsgewijze zoekactie en vervanging van tekst worden uitgevoerd, zowel in een enkel document als in een groep van meerdere documenten.

Zoals veel dingen in de opdrachtregel, is er geen bevestigingsproces, dus zorg ervoor dat je syntaxis correct is ingesteld voordat je een opdracht start, anders moet je misschien nog een keer zoeken en vervangen om je typefout te herstellen.

De basisopdrachtsyntaxis is als volgt: perl -pi -w -e 's/THIS/THAT/g;' /pad/naar/bestanden.txt

Voor een voorbeeld van één woord, als u in elk .txt-bestand alle instanties van 'boeman' moet vervangen door 'maïsbrood' in de map "Documenten", dan zou u de volgende opdracht gebruiken:

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

Voor een voorbeeld van het vinden en vervangen van een volledige woordgroep gaan we ervan uit dat we de hele zin "The Chocolate Factory" gaan vervangen ' met 'The Wizard of Oz' in een groep .txt-bestanden die beginnen met 'Films' die zijn opgeslagen in de map Documenten:

perl -pi -w -e 's/The Chocolate Factory/The Wizard of Oz/g;' ~/Documenten/Films.txt

Het zoeken en vervangen is direct gedaan. U kunt de wijziging nogmaals controleren door cat en grep te gebruiken om te controleren:

"

cat ~/Documents/Films124.txt |grep Tovenaar van Oz"

Toegegeven, dit is redelijk geavanceerd, en ja, batchgewijs zoeken en vervangen via meerdere documenten kan op een gebruiksvriendelijkere manier worden gedaan via GUI-apps zoals TextWrangler en BBEdit, maar soms is de opdrachtregel gewoon sneller voor snelle taken zoals deze en vergelijkbare taken, en er zijn geen extra downloads nodig om deze te gebruiken.

Een grote pluim voor Lifehacker voor de uitstekende truc.

Update: De opdracht 'sed' is een andere manier om snel te zoeken en te vervangen via de opdrachtregel. Het behandelen van sed is meestal een onderwerp voor een ander artikel, maar de basissyntaxis van het gebruik van sed voor deze taak is iets eenvoudiger en dus gemakkelijker te onthouden:

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

Er is geen goede of foute manier, dus of je perl of sed gebruikt wordt een kwestie van persoonlijke voorkeur.

Zoeken & Vervang tekst in meerdere documenten vanaf de opdrachtregel