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