Sed a include souboru

Zdenek Pytela letty na mrakoplas.phil.muni.cz
Středa Prosinec 11 11:27:49 CET 2002


Jan Houstek píše:
> Potreboval bych ze sady sablon vygenerovat jeden vystup. Pritom sablony
> obsahuji radky typu
> 
> \input filename
> 
> (ano, je to TeX), misto kterych je treba vlozit obsah souboru filename.
	To je k něčemu užitečné? To inputování není obvykle bezdůvodné.

> Myslel jsem, ze to udelam v sedu (perl neumim), ale zda se, ze sed umi
> vlozit obsah souboru jen kdyz predem zname jeho jmeno. Lze to nejak
> obejit?
	V sedu zřejmě ne nebo aspoň ne jednoduše, v perlu nějak takhle:
sub imput
{
 if (open A, $_[0].".tex")
 { while (<A>) {print}; close A;}
 else {print "\\input $_[0]"};
}
while (<>)
{ if ($_ =~ /\\input (.*)$/) { imput "$1";}
  else {print; }
}
Detaily si jistě opravíte. Navíc jsou tu nějaké předpoklady, jako že soubory
musí být na předem určeném místě apod., jinak musíte použít mechanismy,
které používá TeX.

> Naprosto idealni reseni by pak osetrilo jeste to, aby se jeden soubor
> neincludoval vicekrat.
	Přes asociativní pole, tak na tohle sed určitě nestačí, přinejmenším
awk. Ale proč by někdo includoval soubor víckrát? K tomu bývají na začátku
includovaných souborů obezličky typu ...jenom pokud není definováno...

-- 

--Zdeněk Pytela, <letty na mrakoplas.phil.muni.cz>



Další informace o konferenci Linux