batch shell skript zeile ersetzen

AMD_Rulez

Lieutenant
Registriert
Feb. 2010
Beiträge
582
Hallo.

ich möchte über ein batch skript eine datei durchsuchen und wenn dort die zeile "blabla" nicht vorhanden ist soll sie an einer bestimmten stelle in diese datei geschrieben werden.

so sieht bis jetzt ein anfang aus wobei die untere if abfrage komischerweise nicht funktioniert und ich die meldung unexpected operator bekomme:
Code:
set i = 0
for zeile in `cat /home/asd/skripte/batch/datei
do
        if test $zeile = schade
        then
                echo "ist da"
        else
                set $i = 1
        fi
done

if test $i -eq 1
then
        echo "nicht da"
fi

damit sollte zumindest schonmal geguckt werden ob die zeile vorhanden ist. wie gesagt die untere if anweisung stimmt nicht

als nächstes soll eine zeile an einer bestimmten stelle der datei eingefügt werden. wie mache ich das?
 
gib doch einfach mit head -y datei >> temp_script
die zeilen aus, danach füg die bestimmte zeile mit echo "....." >> temp_script ein und dann den rest mit
tail -c datei >> temp_script
 
Zuletzt bearbeitet:
das problem ist, dass ich das nicht händisch machen werde weil ich das ganze für mehrere hunderte dateien machen muss
 
bin zwar nicht so firm in shell batch aber denke in der schleife ist ein logikfehler.
und zwar wenn er die zeile findet gibt er zwar "ist da" aus, aber sobald er die nächste zeile durchsucht und dort (was ja sehr wahrscheinilch ist ) kein "schade" vorkommt setzt er i auf 1, dh obwohl die zeile "schade" vorkommt wird später i auf 1 gesetzt. ausser "schade" ist in der letzten zeile.
würde es so machen:

Code:
set i = 0
for zeile in cat /home/asd/skripte/batch/datei
do
        if $zeile = "schade"
        then
                set $i = $i + 1
        fi
done

if $i -eq 0
then
        echo "schade kommt so oft vor" + $i
fi

wie gesagt ist eher logikbeispiel als ausführbarer code da ich in shell nicht so firm bin (string verknüpfung usw.)

PS: der unexpectet operator könnte das "schade" sein, da es soweit ich sehe nicht definiert ist und auch kein string da keine ""
 
du musst es doch nur in dein script einfügen und anpassen .. wo ist da das problem?
 
Zurück
Oben