home *** CD-ROM | disk | FTP | other *** search
- #!/usr/bin/ksh
- #
- # Script fuer Suche in ET++ Manuals
- #
- # SWS T24 fuer Abschlussarbeit 12 ET++ Tutorial
- # Version: 1.1 18.12.91 H.Sch.
- #
- #
- etmanpath=${ET_DIR}/man
- etmanpath1=${etmanpath}/man1
- #
- #Suche in ET++ Manuals nach Begriff, Gross- Kleinschreibung nicht beachten
- #Es wird zuerst in den Filenamen gesucht und falls dort nichts gefunden wird,
- #wird die Suche im Manualinhalt fortgesetzt. Durch Eingabe der gewuenschten
- #Filenamen-Zeilennummer wird 'man' gestartet.
- #Aufruf: etman PATTERN [-d,s,e,f,x,r] (etman executable machen, nicht '. etman')
- # PATTERN: Suchbegriff, Gross- Kleinschreibung wird ignoriert
- # Options: d display Filenamen in denen Begriff vorkommt,
- # suche in Filenamen und Manualinhalt
- # s wie d, jedoch nur in Filenamen suchen (short)
- # e exact ending, d.h. es wird nur am Filenamenende
- # (nicht im Manualinhalt) gesucht
- # und 'man' unmittelbar aufgerufen
- # x exact match, wie -e, der Filename muss aber mit
- # dem GesamtPattern uebereinstimmen
- # f first match, unmittelbar 'man' aufrufen, es wird
- # auch im Manualinhalt gesucht
- # r recover from last search, d.h. Fileliste des letzten
- # Suchvorganges verwenden. Aufruf: 'etman -r'
- #
- #Temp. Files--------
- #
- #===Bei Bedarf abaendern, jedoch kein global fuer mehrere User zugaengliches directory verwenden=====
- #
- fileliste1=~/et1.tmp
- fileliste2=~/et2.tmp
- fileliste3=~/et3.tmp
- fileliste4=~/et4.tmp
- zeilennr=~/et5.tmp
- saveliste=~/et6.tmp
- #
- paranz=$#
-
- #ordne Parameterreihenfolge-------------------
- pattern=$1
- opt=$2
- if [ $# -ge 2 ] && [ ! "$(echo $2 | cut -c1)" = "-" ] && [ "$(echo $1 | cut -c1)" = "-" ] ;then
- pattern=$2
- opt=$1
- fi
- if [ $# -le 1 ] ;then
- opt="-v"
- fi
- if [ $# -eq 1 ] && [ "$1" = "-r" ] ;then
- opt="-r"
- fi
- if [ "$opt" = "-e" ] || [ "$opt" = "-f" ] || [ "$opt" = "-x" ] ;then
- execute="y"
- else
- execute="n"
- fi
-
- if [ $paranz -lt 1 ] || [ $paranz -gt 2 ] ;then
- echo "ET++ man und apropos etman PATTERN [-d] :-d display Files in denen PATTERN vorkommt"
- echo " [-s] :-s display Files, short search"
- echo " (PATTERN: ignore case) [-f] :-f first match execute"
- echo " [-e] :-e exact ending match execute, ignore case"
- echo " [-x] :-x exact match, ignore case"
- echo " [ ] : execute durch Zeilennr. Angabe"
- echo " etman -r :-r recover from last search"
- else
-
- #Suche Begriff in Manual-Filenamen--------------------
- if [ ! "$opt" = "-r" ] ;then
- echo "Suche Begriff in ET++ Manual-Filenamen"
- rm $fileliste1 2> /dev/null 1> /dev/null
- #suche passende Filenamen und schneide '.1' am Filenamenende ab
- ls $etmanpath1 | grep -i $pattern | sed -e "s/\(.*\)\(\.1\)\$/\1/g" > $fileliste1
- if [ -s $fileliste1 ] ;then
- cp $fileliste1 $saveliste
- if [ "$execute" = "n" ] ;then
- pr -n2 -b -t $fileliste1 | more
- else
- pr -n2 -b -t $fileliste1
- fi
- fi
- else
- #recover mit altem Suchinhalt
- cp $saveliste $fileliste1 2> /dev/null 1> /dev/null
- if [ -s $fileliste1 ] ;then
- echo "Ergebnis des letzten Suchvorganges"
- pr -n2 -b -t $fileliste1 | more
- else
- echo "kein letzter Suchvorgang vorhanden"
- opt="-s"
- fi
- fi
-
-
- #Suche Begriff im Manual-Inhalt-------------------------
- if [ ! -s $fileliste1 ] && [ ! "$opt" = "-s" ] && [ ! "$opt" = "-e" ] &&[ ! "$opt" = "-x" ] ;then
- echo "Suche Begriff in ET++ Manuals"
- rm $zeilennr 2> /dev/null 1> /dev/null
- echo "" > $zeilennr
- if [ "$opt" = "-v" ] ;then
- echo -n "Suche im Manualinhalt fortsetzen ? RETURN fuer ja, sonst n >>"
- line > $zeilennr
- fi
- if [ -z "$(cat $zeilennr)" ] ;then
- rm $fileliste1
- rm $fileliste2 2> /dev/null 1> /dev/null
- rm $fileliste3 2> /dev/null 1> /dev/null
- rm $fileliste4 2> /dev/null 1> /dev/null
- < /dev/null
- find $etmanpath1 "*" -exec grep -i -l $pattern {} \; > $fileliste4 2> /dev/null
- #hole Filenamen aus Pfadnamen und schneide '.1' am Ende ab
- sed -e "s/\(.*\/man1\/\)\(.*\)/\2/g" $fileliste4 | sed -e "s/\(.*\)\(\.1\)\$/\1/g" > $fileliste1
- if [ -s $fileliste1 ] ;then
- cp $fileliste1 $saveliste
- if [ "$execute" = "n" ] ;then
- pr -n2 -b -t $fileliste1 | more
- else
- pr -n2 -b -t $fileliste1
- fi
- fi
- fi
- fi
-
- #Fuehre Zeile aus falls nicht nur Display---------------------
- rm $fileliste4 2> /dev/null 1> /dev/null
- if [ ! "$opt" = "-d" ] && [ ! "$opt" = "-s" ] && [ -s $fileliste1 ]
- then
- if [ "$execute" = "n" ] ;then
- #Zeilennummer auswaehlen
- echo -n "Nr der gewuenschten Zeile angeben >> "
- rm $zeilennr 2> /dev/null 1> /dev/null
- line > $zeilennr
- sed -e "s/[a-z,A-Z]/0/g" $zeilennr > $fileliste4
- cp $fileliste4 $zeilennr
- rm $fileliste4
- cat $fileliste1 | wc -l > $fileliste4
- if [ -z "$(cat $zeilennr)" ] || [ $(cat $zeilennr) -gt $(cat $fileliste4) ] ;then
- echo "0" > $zeilennr
- fi
- tail +$(cat $zeilennr)l $fileliste1 > $fileliste2
- else
- #execute machting line directly
- cp $fileliste1 $fileliste2
- echo "1" > $zeilennr
- echo "1" > $fileliste4
- fi
-
- #Exact match des pattern oder match am Zeilenende-----------
- if [ "$opt" = "-e" ] || [ "$opt" = "-x" ] ;then
- if [ "$opt" = "-e" ] ;then
- rm $fileliste1
- grep -i $pattern\$ $fileliste2 | tee $fileliste1 | line > $fileliste3
- if [ $(wc -l <$fileliste1) -gt 1 ] ;then
- echo "WARNING: keine eindeutige Auswahl moeglich, keine Option statt -e angeben"
- fi
- if [ -z "$(cat $fileliste3)" ] ;then
- echo "WARNING: keine Uebereinstimmung am Zeilenende, keine Option statt -e angeben"
- fi
- else
- fgrep -ix $pattern $fileliste2 | line > $fileliste3
- if [ -z "$(cat $fileliste3)" ] ;then
- echo "WARNING: keine Gesamtuebereinstimmung des Suchbegriffes, keine Option statt -x angeben"
- fi
- fi
- rm $zeilennr 1> /dev/null 2> /dev/null
- rm $fileliste4 1> /dev/null 2> /dev/null
- echo "1" > $zeilennr
- echo "1" > $fileliste4
- else
- cat $fileliste2 | line > $fileliste3
- fi
-
-
- # man aufrufen -----------
- if test $(cat $zeilennr) -gt 0 -a -s $fileliste3 -a ! -z "$(cat $fileliste3)" ;then
- man -P $etmanpath $(cat $fileliste3) | less
- fi
- fi
- # Bereinigungen --------------
- rm $fileliste1 2> /dev/null 1> /dev/null
- rm $fileliste2 2> /dev/null 1> /dev/null
- rm $fileliste3 2> /dev/null 1> /dev/null
- rm $fileliste4 2> /dev/null 1> /dev/null
- rm $zeilennr 2> /dev/null 1> /dev/null
- fi
-