[LUGOS] menjava teksta v vec datotekah
igor kolar
ike.lugos at gmail.com
Thu Jun 23 17:54:07 CEST 2005
> > Ce se pa motim, mi lahko prosim kdo svetuje, kako zamenjas v vseh
> > datotekah v direktoriju npr. tekst "Prej" s "Potem"?
> Jaz si ponavadi pomagam kar z vim. Torej:
>
> find ./ -exec vim -c ":%s/Prej/Potem/g" -c ":wq" "{}" \;
Komplicirano ..
Daj raje tole:
$ perl -pi -e 's/Prej/Po/g' *.txt
Operacija je -e 's/Prej/Po/g', kar pomeni, naj zamenja nize "Prej" z
nizom "Po", in to vse, ne le prvi primer (/g). In za vse tekstovne
datoteke. Opcija -e pove perlu, da je ukaz podan kar v ukazni vrstici.
Daljše skripte se zapišejo v datoteko s končnico .pl.
Kombinacija -pi pomeni, da naj spremembo shrani nazaj čez originalni
file. Če hočeš shraniti v drug fajl, daj -i.bak, kar bo shranilo npr.
"original.txt" v "original.txt.bak".
Ukaz s// drugače pomeni "regular expression substitute". V vzorec
(prej) lahko s posebnimi simboli poljubno opišeš niz. Npr
's/[0-9]+/cifre/' zamenja prvo število (sestavljeno iz vsaj ene (+)
cifre) z nizom "cifre". Možnosti so mnoge in se jih splača naučiti.
No, to samo za informacijo. Išči "regex" po netu, ali pa poišči
"Programming perl" od O'rreily-ja, ki je tudi zastonj dosegljiva na
spletu.
-i
More information about the lugos-list
mailing list