Paieška ir keitimas su SED

Iš Žinynas.
Jump to navigation Jump to search

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)