Komandrindā atrodiet & Aizstāt tekstu vairākos dokumentos
Ja esat apmierināts ar komandrindu un kādreiz esat nonācis situācijā, kad vairāku teksta dokumentu grupā jāatrod un jāaizstāj vārds, frāze, URL vai rakstzīme, perl darbu veic diezgan labi. Vienkārša komandu virkne ļoti ātri veiks grupas pakešu atrašanu un aizstāšanu tekstā gan vienā dokumentā, gan vairāku dokumentu grupā.
Tāpat kā daudzas lietas komandrindā, apstiprinājuma process nenotiek, tāpēc pirms komandas palaišanas vēlēsities pārliecināties, vai sintakse ir iestatīta pareizi, pretējā gadījumā jums, iespējams, būs jāveic cita meklēšana un aizstāšana. lai labotu jūsu drukas kļūdu.
Pamata komandu sintakse ir šāda: perl -pi -w -e 's/THIS/THAT/g;' /path/to/files.txt
viena vārda piemēram, ja nepieciešams aizstāt visus “ogre” gadījumus ar “cornbread” katrā .txt failā mapē “Dokumenti”, izmantojiet šādu komandu:
perl -pi -w -e 's/ogre/cornbread/g;' ~/Documents/.txt
Piemēram, kā atrast un aizstāt visu frāzi, pieņemsim, ka mēs aizstāsim visu teikumu “Šokolādes fabrika ” ar “The Wizard of Oz” .txt failu grupā, kas sākas ar “Filmas”, kas saglabāta dokumentu direktorijā:
perl -pi -w -e 's/The Chocolate Factory/The Wizard of Oz/g;' ~/Documents/Films.txt
Atrašana un aizstāšana tiek veikta nekavējoties. Varat vēlreiz pārbaudīt izmaiņas, izmantojot cat un grep, lai pārbaudītu:
cat ~/Documents/Films124.txt |grep Wizard of Oz"
Atzīst, ka tas ir diezgan uzlabots, un jā, pakešu atrašanu un aizstāšanu, izmantojot vairākus dokumentus, var veikt lietotājam draudzīgākā veidā, izmantojot GUI lietotnes, piemēram, TextWrangler un BBEdit, taču dažreiz komandrinda ir tikai ātrāka. tādiem ātriem uzdevumiem kā šis un citiem līdzīgiem uzdevumiem, turklāt, lai to izmantotu, nav nepieciešama papildu lejupielāde.
Liels īkšķis Lifehacker par lielisko triku.
Update: komanda “sed” ir vēl viens veids, kā ātri atrast un aizstāt, izmantojot komandrindu. Sed pārsvarā ir cita raksta tēma, taču pamata sintakse sed izmantošanai šim uzdevumam ir nedaudz vienkāršāka un tādējādi vieglāk iegaumējama:
sed -i 's/THIS/THAT/g' /path/to/files.txt
Nav pareiza vai nepareiza veida, tāpēc tas, vai izmantojat perl vai sed, ir atkarīgs no personīgās izvēles.