Benutzer-Werkzeuge

Webseiten-Werkzeuge


os4_unix_sh
                                       sh


 BACK ..

 nuetzliche SCRIPT-Routinen
 ==========================



 #------------------------------------------------------------------------------
 #

 In diesem Script schaltet man mit Hilfe von Variablen Kommandos ein, oder aus:



 #!/bin/sh

 SCHALTER="YES"
 #SCHALTER="NO"



 case $SCHALTER in
 [Yy][Ee][Ss])
         echo "YES Yes yes"
         ;;
 *)
         echo "kein 'YES' oder 'Yes' oder 'yes'"
         ;;
 esac



 case $SCHALTER in
 [Nn][Oo] | '')
         echo "'NO' oder 'No' oder 'no' oder 'nichts'"
         ;;
 *)
         echo "nicht leer, aber auch kein 'No'"
         ;;
 esac

 #------------------------------------------------------------------------------
 #


 AUSSCHNEIDEN von Zeichen:
 -------------------------
 Es soll das Zeichen [a] aus der Datei [textgatei.txt] ausgeschnitten werden:

 cat textdatei.txt | tr -d "a"

 Am besten mal ausprobieren, es ist ein interessantes Verhalten.




 ERSETZEN von Zeichen (die Anzahl der Zeichen wird nicht veraendert):
 --------------------------------------------------------------------
 Es soll das Zeichen [a] gegen das Zeichen [n] in der
 Datei [textgatei.txt] ausgetauscht werden:

 cat textdatei.txt | tr -s "a" "n"

 Am besten mal ausprobieren, es ist ein interessantes Verhalten.




 Konvertieren einer "*.csv"-Datei in "*.html"-Datei:
 --------------------------------------------------

 Aufgerufen wird das Script (csv2html.sh) wie folgt:
 # csv2html.sh  adressen.csv  >  adressen.html

 #------------------------------------------------------------------------------
 #

 #!/bin/sh

 #IFS=","
 IFS=";"
 #IFS="|"

 echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//DE">'
 echo ''
 echo '<HTML>'
 echo '<HEAD>'
 echo '<META NAME="GENERATOR" CONTENT="vi (FreeBSD)">'
 echo '<META NAME="CHANGEDBY" CONTENT="script">'
 echo '</HEAD>'
 echo '<STYLE><!--'
 echo 'BODY { font-family: "Helvetica"; font-size: 2 }'
 echo '--></STYLE>'
 echo '<BODY TEXT="#000000" BGCOLOR="#ffffff">'
 echo ''
 echo '<TABLE FRAME=VOID CELLSPACING=0 COLS=39 RULES=GROUPS BORDER=1>'
 echo ''
 echo '<TBODY>'
 echo ''


 ### hier werden die Zeilen einzeln eingelesen:
 cat $1 | (while read DATENZEILE
 do

     ### Zeilenanfang (HTML-Tabelle)
     echo "<TR>"

     ### die Spalten dieser Zeile werden hier geschrieben (HTML-Tabelle)
     for DATENZELLE in $DATENZEILE
     {
         if [ x$( echo "$DATENZELLE" | grep "@" ) != x ]
         then
                 echo "<TD ALIGN=LEFT><a href=\"mailtö$DATENZELLE\">$DATENZELLE</a></TD>"
         else
                 echo "<TD ALIGN=LEFT>$DATENZELLE</TD>"
         fi
     }

     ### Zeilenende (HTML-Tabelle)
     echo "</TR>"
 done)

 echo '</TBODY>'
 echo '</BODY>'
 echo '</HTML>'

 #------------------------------------------------------------------------------
 #

 Dieses Script findet den Port der eine bestimmte Datei installiert!
 -------------------------------------------------------------------

         Sie bekommen ein Programm nicht zum laufen oder es funktioniert eine
         Funktion nicht und sie haben durch die Ausgabe auf den Schirm oder
         in der Logdatei nur sehen koennen das eine bestimmte Datei nicht
         aufgerufen werden kann. Da "locate" diese Datei auch nicht findet ist
         sie mit Sicherheit auch nicht installiert. Jetzt muesste man wissen
         welcher Port installiert werden muss um das Problem zu beheben...
         Man kann es mit "% cd /usr/ports/ && make search key=Pretty.pm"
         versuchen, aber (bei mir) hat es nicht funktioniert.
         Da jeder Port eine Liste aller zu installierenden Dateien enthaelt
         kann dieses Script diese Listen nach dem gewuenschten Begriff/Datei
         durchsuchen. Wird zum Beispiel die Datei "Pretty.pm" gesucht, dann
         starten Sie das Script sö

         % find-file-in-ports.sh  Pretty.pm

         Jetzt kann das schon mal eine halbe Stunde dauern aber man muss nicht
         selber suchen wie ein wilder.    ;-)
         Die Ausgabe kann dann so aussehen:

         /usr/ports/lang/perl5/pkg-plist: lib/perl5/%%PERL_VER%%/CGI/Pretty.pm
         /usr/ports/www/p5-CGI.pm/pkg-plist: lib/perl5/site_perl/%%PERL_VER%%/CGI/Pretty.pm
         /usr/ports/x11-toolkits/p5-Tk/pkg-plist: lib/perl5/site_perl/%%PERL_VER%%/%%PERL_ARCH%%/Tk/Pretty.pm

         Das heisst, diese Datei wird von drei Ports installiert:
         - /usr/ports/lang/perl5/
         - /usr/ports/www/p5-CGI.pm/
         - /usr/ports/x11-toolkits/p5-Tk/

 #!/bin/sh
 ###############################################################################
 #
 #   find-file-in-ports.sh
 ###############################################################################
 #
 #
 if [ x$1 != x ]
 then
 #
 find /usr/ports/ -name pkg-plist | (while read plistfile
 do
         echo -n "$plistfile: "
         grep -i $1 $plistfile
         echo ""
 done) | grep "$1"
 else
         echo "Bitte den Suchbegriff als Parameter uebergeben!"
 fi

 #------------------------------------------------------------------------------
 #

 Wenn man eine Datei sucht in der etwas bestimmtes steht, aber man weiss nicht
 wo die Datei ist, dann kann man mit "grep -ri [Suchbegriff] *" suchen.
 Problematisch wird es bei sehr grossen und tiefen Verzeichnisbaemen, dann kann
 es schon mal vorkommen das grep aussteigt.
 In soeinem Fall hilft das folgende Script:



 #!/bin/sh

 ###############################################################################
 #
 # suchen.sh [pfad] [Suchbegriff]
 ###############################################################################
 #

 if [ x != x$2 ]
 then
  if [ x != x$1 ]
  then

         echo "suche in $1 nach $2 ..."
         find $1 -type f | ( while read spamfile ; do
         echo -n "$spamfile:   "
         cat $spamfile | grep -i $2
         echo ""
         done) | grep -i $2
  else
         echo "Sie haben die Parameter vergessen!"
         echo "suche.sh  [pfad]  [Suchbegriff]"
  fi

 else
         echo "Sie haben die Parameter nicht vollstaendig angegeben!"
         echo "suche.sh  [pfad]  [Suchbegriff]"
 fi

 #------------------------------------------------------------------------------
 #


 #!/bin/sh
 #
 ###############################################################################
 #
 # Dieses Script gibt den Inhalt einer TEXTDATEI neu organisiert aus.
 # Das Trennzeichen dafuer wird mit "IFS" definiert,
 # es kann auch ein Zeilenumbruch sein.
 #
 # z.B.::
 #
 #IFS="
 #"
 ###############################################################################
 #
 # Eine moegliche Beispieltextdatei:
 #------ Beispiel "text.txt" Beginn --------------------------------------------
 #Name: Mustermann
 #Telefon(privat): 0123-9876543
 #Telefon(Arbeit): 0321-6789543
 #Telefon(mobil): 0177-5678934
 #Adresse: Glatte-Strasse 3
 #Ort: Musterhausen
 #^
 #
 #Name: Schulz
 #
 #
 #Telefon: keines
 #
 #Adresse: Glatte-Strasse 45
 #Ort: Musterhausen
 #
 #^
 #Name: Rudi
 #
 #Telefon: 0163-3456789
 #Adresse: Glatte-Strasse 345
 #Ort: Musterhausen
 #
 #------ Beispiel "text.txt" Ende ----------------------------------------------
 ###############################################################################
 #

 IFS="^"
 TEXTDATEI="text.txt"


 for RECORD in `cat $TEXTDATEI`
 do

    DATA1=`echo "$RECORD" | grep "Name"`
    DATA2=`echo "$RECORD" | grep "Telefon"`

    echo "==================="
    echo "$DATA1  $DATA2"
    echo "-------------------"

 done


   [IMG]
/home/http/wiki/data/pages/os4_unix_sh.txt · Zuletzt geändert: von manfred