Hallo, habe mir zwar schon den Thread dazu angeschaut und ausprobiert nur es klappt nicht wie erhofft.
Mein Problem ist, dass die Zeilen in der Datei mit einer Zeilennummer versehen sind und das Programm fragt die Zeilennummer ab , damit er weiß, welche Zeile gelöscht werden muss.
Das erkennt er auch ,er sucht mir die richtige Zeile raus ,nur wenn ich Sie lösche, wird sie zwar in der temp Datei geschrieben , doch Sie bleibt auch in der Originaldatei erhalten, warum?
Mein Code:
Mein Problem ist, dass die Zeilen in der Datei mit einer Zeilennummer versehen sind und das Programm fragt die Zeilennummer ab , damit er weiß, welche Zeile gelöscht werden muss.
Das erkennt er auch ,er sucht mir die richtige Zeile raus ,nur wenn ich Sie lösche, wird sie zwar in der temp Datei geschrieben , doch Sie bleibt auch in der Originaldatei erhalten, warum?
Mein Code:
Code:
#! /bin/bash
#set -x
#Adressen verwalten
zeile=1
if [ ! -f name.txt ]
then
touch name.txt
fi
while true
do
echo "--------------------------------------------------"
echo "Adresssatz einfügen : e"
echo "Adresse ausgeben (Satznummer eingeben) : a"
echo "Adresse ausgeben (Nachnamenanfang) : n"
echo "Adresssatz sortiert ausgeben : s"
echo "Adresssatz löschen (Satznummer) : l"
echo "Ende+Informationen : i"
echo ""
echo "--------------------------------------------------"
echo -n "Geben Sie bitte Ihre Auswahl an : "
read auswahl
case $auswahl in
e) echo " Bitte den Nachnamen eingeben : "
read nachname
echo " Bitte den Vorname eingeben : "
read vorname
echo "Bitte den die Strasse eingeben: "
read strasse
echo "Bitte die Postleitzahl eingeben: "
read plz
echo "Bitte den Wohnort eingeben: "
read ort
echo "$zeile : $nachname : $vorname : $strasse : $plz : $ort" >>name.txt
sort name.txt >name.sort
mv name.sort name.txt
zeile=$[$zeile+1]
echo "**************************************"
echo "Die Adresseingaben wurden gspeichert"
echo "**************************************";;
a) echo " Geben Sie bitte die Satznummer ein (Zahlen) :"
read zeile
a=`grep "$zeile" name.txt`
echo $a;;
n) echo " Geben Sie bitte den Anfangsbuchstaben des Nachnamens ein :"
read anfang
b=`cat name.txt | grep '^.\{4\}'$anfang`
echo $b;;
s)echo "Hier wurde Ihnen der Komplette Adresssatz ausgegeben"
echo "++++++++++++++++++++++++++++++++++++++++++++++"
cat name.txt
echo "++++++++++++++++++++++++++++++++++++++++++++++";;
i) echo "Dateiinformation"
echo "**********************************************************"
file name.txt
d=`ls -l name.txt`
echo $d
echo "**********************************************************";;
l) echo "Geben Sie bitte die Satznummer, um den entsprechenden Adressatz zu loeschen :"
read zeile
c=`grep ^$zeile name.txt`
echo $c
echo "Sie löschen gerade $zeile"
echo "Sind Sie sicher ? [j/n]"
read eingabe
case $eingabe in
j) sed /{$c}/d name.txt < temp;;
n) echo "Ok, wird nicht gelöscht";;
*) echo "Ungültige Auswahl,bitte Auswahlmenue beachten"
exit;;
esac
esac
done