[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