#! /bin/sh # OpenOffice 2 stellt keine Suchfunktion bereit, mit der ein Bestand # von Dateien im odt-Format auf das Vorkommen gewisser Suchwörter ge- # testet werden könnte. Dieses Skript isoliert aus jeder odt-Datei den # Text im xml-Format und testet, ob hierin die Suchbegriffe angetroffen # werden. Das Skript ist nicht für Suchbegriffe mit Umlauten geeignet. # Dieses Skript nutzt den Streameditor GNU sed 3.02, das Suchwerkzeug GNU # grep 2.5.1 und die GNU bash 2.05 # 2009-02-04 if [ -z $1 ]; then echo -e " Dem Skript sind keine zu durchsuchenden Dateien angegeben worden.\n" exit 1 fi echo -e " Dieses Skript prueft odt-Textdateien auf das Vorkommen von Suchbegriffen. Diese werden, einer je Zeile, in einer unformatierten Textdatei übergeben. Die zu durchsuchenden Dateien müssen, durch Leerraum vom Kommando stringinodt.sh getrennt, bereits beim Aufruf des Skriptes als Argument mitübergeben worden sein. Das Programm ist nicht für Suchstrings mit Umlauten und Sonderzeichen geeignet." # Angabe der Listendatei mit den Suchbegriffen echo -en "\n Bitte die Listendatei angeben: " read liste; echo -e "\n" # Anlegen einer Datei fuer Zwischenergebnisse touch /tmp/$$-treffer # Jede uebergebene odt-Datei ist zu testen while [ $1 ]; do unzip -c $1 content.xml > /tmp/$$-content # j pickt die Suchbegriffe zeilenweise j=1 # Generieren eines ersten Suchbegriffs d=$(sed -n "$j"p $liste) # solange Suchbegriffe vorhanden sind, auf aktuellen # xml-Auszug anwenden while [ $d ]; do grep -qi $d /tmp/$$-content if [ $? -eq 0 ]; then ## Suchbegriff wurde gefunden echo $d in $1 >> /tmp/$$-treffer echo $d gefunden fi # Generieren des naechsten Suchbegriffes j=$[$j+1]; d=$(sed -n "$j"p $liste) done # Die naechste odt-Datei in Arbeit nehmen shift done # Sortieren der Zwischenergebnisliste, entfernen von Doppelungen sort /tmp/$$-treffer | uniq > /tmp/treffer echo -e "\n Die Datei /tmp/treffer listet die Funde auf." echo -e "\n" # Loeschen der zwischenzeitlich benoetigten Dateien rm /tmp/$$-treffer rm /tmp/$$-content