Paieška ir keitimas su SED

Iš Žinynas.
21:03, 2 spalio 2013 versija, sukurta \dev\null (Aptarimas | indėlis) (\dev\null pervadino puslapį PaieÅ¡ka ir keitimas su SED į Paieška ir keitimas su SED)
(skirt) ← Ankstesnė versija | Dabartinė versija (skirt) | Vėlesnė versija → (skirt)
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)