Raskite & Pakeisti tekstą keliuose dokumentuose iš komandų eilutės
Jei esate patenkinti komandų eilute ir esate tokioje situacijoje, kai reikia rasti ir pakeisti žodį, frazę, URL ar simbolį kelių tekstinių dokumentų grupėje, perl puikiai atlieka savo darbą. Paprasta komandų eilutė labai greitai atliks grupinį teksto paketinį radimą ir pakeitimą viename dokumente ar kelių dokumentų grupėje.
Kaip ir daugelyje komandų eilutės dalykų, nėra patvirtinimo proceso, todėl prieš paleisdami komandą norėsite įsitikinti, kad sintaksė nustatyta teisingai, kitaip gali tekti atlikti kitą paiešką ir pakeisti kad ištaisytumėte rašybos klaidą.
Pagrindinė komandų sintaksė yra tokia: perl -pi -w -e 's/THIS/THAT/g;' /path/to/files.txt
vieno žodžio pavyzdiui, jei reikia pakeisti visus „ogre“ atvejus į „cornbread“ kiekviename .txt faile aplanke „Dokumentai“, naudokite šią komandą:
perl -pi -w -e 's/ogre/cornbread/g;' ~/Documents/.txt
pavyzdžiui, kaip rasti ir pakeisti visą frazę, tarkime, kad pakeisime visą sakinį „Šokolado fabrikas “ su „The Wizard of Oz“ .txt failų grupėje, prasidedančioje „Films“, saugomų dokumentų kataloge:
perl -pi -w -e 's/The Chocolate Factory/The Wizard of Oz/g;' ~/Documents/Films.txt
Rasti ir pakeisti atliekami nedelsiant. Galite dar kartą patikrinti pakeitimą naudodami cat ir grep, kad patikrintumėte:
cat ~/Documents/Films124.txt |grep Wizard of Oz"
Nr. atlikti tokias greitas užduotis kaip ši ir kitos panašios, be to, norint jas naudoti nereikia jokių papildomų atsisiuntimų.
Ačiū Lifehacker už puikų triuką.
Update: komanda „sed“ yra dar vienas būdas greitai surasti ir pakeisti komandų eilutę. Sed aprėptis dažniausiai yra kito straipsnio tema, tačiau pagrindinė sed naudojimo sintaksė šiai užduočiai atlikti yra šiek tiek paprastesnė ir lengviau įsimenama:
sed -i 's/THIS/THAT/g' /path/to/files.txt