3/12/2008

Tekst samenvoegen met shell script

Filed under: — pinguim @ 3:37 pm

Shell ScriptJe hebt een aantal tekst bestanden die je wil samenvoegen tot een groot bestand, om een “zoek” te kunnen doen op het geheel, of om het af te drukken, enz.
De bestanden kunnen zijn:

  • teksten zijn met Kate of notepad gemaakt, als ideeën, brainstorm teksten in een directory
  • configuratiefiles van een programma; meestal ook pure tekst (daarom niet met die extentie .txt maar bv .cfg)
  • shell scripts met extentie .sh bv.
  • log files (met extentie .log bv)
  • source files van een programma

In het onderstaande voorbeeld zijn het source files, maar de methode is hetzelfde:

  • welke extenties zijn het?
  • waar staan ze?
  • waar moet het resultaat komen?

Ik zet nog lijntjes om de onderdelen uit elkaar te houden en nadien gemakkelijk begin/einde te vinden.
Ik maak ook een kleine inhoudstabel “tempContent” en nadien wordt die onderaan het bestand geplakt.

Je kan gemakkelijk uitbreiden: als je bv ook *.form wil opnemen moet je die gewoon toevoegen in de regel met for j.

# make a single source file for print purpose etc.
destination="./SourceFacs.txt"
tempContent="./SourceTemp.txt"
oneline="  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "
doubleline=" = = = = = = = = = = = = = = = = = = = = = = = = = = = = = "
rm $destination
rm $tempContent
touch $destination
touch $tempContent
target="./../Documents/GambasPrj/Dev/facs/"
echo "Compilatie " >> $destination
echo " Content: " >> $tempContent
for j in  "*.module" "*.class" ;
do
  for i in `find $target -name $j`;
  do 
    echo $i >> $tempContent
    echo $i >> $destination
    echo "" >> $destination
    cat $i >> $destination
    echo "" >> $destination
    echo $oneline >> $destination
  done
  echo $doubleline >> $destination
  echo $doubleline >> $tempContent
  echo ""
done
echo " * * * " >> $destination
echo "" >> $destination
cat $tempContent >> $destination 
echo " Compilation ready: "
ls -lF $destination

Het resultaat is een tekstbestand dat eerst de .module bestanden bevat, daarna de *.class bestanden, en onderaan een lijst met de bestanden, ook eerst de modules en daarna de class.

In OpenOffice.org Writer doe je daarna “Insert, File” en kiest de samengevoegde tekst.
Zet bij Stijl en opmaak het standaardlettertype op 9pt.
Dan Format, Page, 3 kolommen.
Op deze manier kan je broncode tekst van in totaal 133 pagina’s terugbrengen tot 50 pagina’s om te drukken (recto/verso=25 blz) .

Reacties zijn gesloten.

Powered by WordPress