मुझे नहीं पता कि आप ऐसा क्यों करते हैं, लेकिन आपके पास यहां दो टेम्पलेट हैं। एक आपका 'डेटाबेस' है और एक आपका असली टेम्प्लेट है। दोनों को shtpl से हैंडल करना आसान है । (मेरा निजी प्रोजेक्ट, इसलिए व्यापक रूप से उपयोग में नहीं है, लेकिन वास्तव में इस तरह की समस्याओं को हल करने के लिए विकसित किया गया था)
Shtpl के साथ आप कुछ इस तरह करेंगे:
फ़ाइल 'कॉन्फ़िगरेशन' की सामग्री:
template_main=main.txt
template_other=other.txt
text1=whatever
text2=blah
फ़ाइल 'डेटाबेस' की सामग्री (मैंने माना, कि सीमांकक टैब (\ t) है):
#% . "$CONFFile"
#% if [ -z "$template_main" ] || [ -z "$template_other" ] || \
#% [ -z "$text1" ] || [ -z "$text2" ]; then
#% printf "database could not be generated!\n" > /dev/stderr
#% exit 1
#% fi
#%# outputfile template data1 data2 data3
first.txt $template_main $text1 abcd 1234
second.txt $template_main $text2 efgh 5678
third.txt $template_other $text1 ij 90
Generatetemplates.sh की सामग्री:
#!/bin/bash
if [ ! -s "$CONFFile" ]; then
if [ ! -s "$1" ]; then
printf "CONFfile is not set or empty!\n"
exit 1
else
export CONFFile="$1"
fi
fi
DB="$( bash -c "$( shtpl database )" )"
if [ -z "$DB" ]; then
printf "Database is empty! Abort.\n"
exit 2
fi
IFS=$'\t'
printf "%s" "$DB" | while read "Out" "In" "data1" "data2" "data3"; do
data1="$data1" data2="$data2" data3="$data3" \
bash -c "$( shtpl "$In" )" > "$Out"
done
Main.txt की सामग्री (other.txt काफी समान है):
main.txt template
$data1
$data2
$data3
इसलिए जेनरेटेटेम्पलेट्स को क्रियान्वित करना
$ bash generatetemplates.sh "./configuration"
हमें first.txt, second.txt और third.txt जेनरेट करता है।
$ cat first.txt | $ cat second.txt | $ cat third.txt
main.txt template | main.txt template | other.txt template
whatever | blah | whatever
abcd | efgh | ij
1234 | 5678 | 90
थोड़ी व्याख्या: जेनेरेटेमैप्लेट्स में। आपके विन्यास-फाइल से उत्पन्न 'डेटाबेस' पहली जरूरत है। और दूसरी बात डेटाबेस में प्रत्येक टुपेल के लिए अंत में आपके इन-टेम्प्लेट से संबंधित आउट-फाइल।
नोट: एक खाली डेटा [123] परेशानियों को पढ़ता है। तो यह इस दृष्टिकोण के साथ संभव नहीं है।
तो, आशा है कि यह आपकी आवश्यकताओं के लिए पर्याप्त सरल है।
मज़े करो!