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
