náhrada textu ze souboru - awk
pavel hampl
hampl na gncz.cz
Pátek Květen 31 09:22:44 CEST 2002
BzF wrote:
>
> Dobrý den,
> potřeboval bych v jednom souboru (orig.txt) nahradit určitý sled znaků (xxxx)
> právě jedním (vždy dalším) řádkem z jiného souboru (repl.txt), tedy např.:
> -----orig.txt-----
> blablaxxxxbla
> hmmxxxxhmmmmm
> nenenenexxxxne
> -----repl.txt-----
> 0A
> 0B
> 0C
> -----kýžený výsledek-----
> blabla0Abla
> hmm0Bhmmmmm
> nenenene0Cne
>
> Jak to co nejjednodušeji udělat?
> Dík moc
> BzF
>
Treba pomoci awk takovymhle skriptem:
=======================================
BEGIN {
text="xxx"
}
{
k=match($0,text)
while (k>0) {
getline nahrada <"repl.txt"
sub(text,nahrada)
k=match($0,text)
}
print
}
=======================================
Pokud si to zkopirujete treba do "nahrad.awk", tak volate:
awk -f nahrad.awk orig.txt >kam_je_libo.txt
Jmeno souboru s nahradnimi texty je natvrdo vypsano ve
skriptu, stejne jako retezec, ktery se nahrazuje (ten je v
sekci BEGIN).
Funkce "sub" nahradi prvni vyskyt na radku, takze pokud mate
text na radku vicekrat, nahradi ho pokazde necim jinym.
Pokud byste potreboval nahradit vsechny vyskyty na jednom
radku jednim textem, zmente jenom "sub" na "gsub". Pak sice
bude ta "while" konstrukce zbytecna, protoze to projde
napoprve vsechny vyskyty, ale nijak tam nevadi.
Hezky si to uzijte.
Pavel Hampl
--
------------------------------------------
Pavel Hampl email: hampl na gncz.cz
GN Resources CZ http://www.gncz.cz
Ve Smeckach 20 tel: +420-2-96337821 <<NEW!
11000 Praha 1, CZ
Další informace o konferenci Linux