Paieška ir keitimas su SED
SED yra galingas įrankis tekstui apdoroti, su SED įmanoma interpretuoti, manipuliuoti ir panašiai dirbti su tekstu. Pradėkime nuo paprasto pavyzdžio: Įsivaizduokite jog turite didelį faila (txt, php, html, perl ar panašų) ir jums reikia pakeisti visus šiame faile esamus žodžius iš "blogas" į "geras".
Panaudojama paprasta komanda:
sed -i 's/blogas/geras/g' /home/devnull/didelis_tekstas.txt
Komanda šneka pati už save "sed" pakeičia (-i) vietoje vieno žodžio į kitą, šiuo atveju "blogas" į "geras" faile "/home/devnull/didelis_tekstas.txt.
Dabar ateina visos unix magiškos galimybės: įsivaizduokite, kad turite kataloga pilną failų su "blogas" ir norite visus juos redaguoti kaip darėte pastarajį kartą ? Šį kartą kartu panaudosime puikią komandą "find"
find /home/devnull/didelis_tekstas.txt -type f -exec sed -i 's/blogas/geras/g' {} \;
Taip pat galima panaudoti panašų scriptą
#!/bin/bash for fl in *.php; do mv $fl $fl.old sed 's/blogas/geras/g' $fl.old > $fl rm -f $fl.old done
Atsiminkite, jog rašydami tekstą su įvairiais simboliais tokiais kaip / , turite įterpti \ (escape character) pvz.:
sed -i 's/www.google.lt\/maps/www.google.lt\/translate/g'
Perlo myletojam tinka ir ;-)
perl -e "s/blogas/geras/g;" -pi.save $(find DirectoryName -type f)