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