• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Zeile suchen und ggf. ersetzen [gelöst]

compi

Member
Ich habe schon wieder ein Problem.

Ich möchte in einem Shelscript, in einer Datei, nach einer Zeile suchen und wenn diese vorhanden ist, diese ersetzen, wenn die Zeile nicht vorhanden ist anhängen.

Beispiel:

Datei.txt
Inhalt:
Zeile1 Daten1
Zeile2 Daten2
Zeile3 Daten3

Suche Zeile4 $variable

Ergebniss

Datei.txt
Inhalt:
Zeile1 Daten1
Zeile2 Daten2
Zeile3 Daten3
Zeile4 $variable

erneute Suche Zeile4 $variable

Ergebniss

Datei.txt
Inhalt:
Zeile1 Daten1
Zeile2 Daten2
Zeile3 Daten3
Zeile4 $variable
 

framp

Moderator
Teammitglied
Das kann man mit sed recht einfach machen. Ich denke mir Du hast Da noch einen tieferen Sinn. Leider erschliesst sich der mir nicht :???:
 
OP
C

compi

Member
ok genauer

$variable1 = weiß ich nicht (wird im script gebildet)
$variable2 = weiß ich

Datei die ich manipulieren möchte.

rc.local

und ich möchte prüfen ob in der Datei schon der Eintrag

application -x ????

exsistiert, wenn ja ersetzen durch

application -x $variable1 $variable2

wenn noch nicht da dann einfügen.
 

HBtux

Member
Ich hoffe ich habe Deine Aufgabe richtig gedeutet.

Teste das Script aber bitte erst mal an einer Test-Datei...!

Code:
VARIABLE1=string1
VARIABLE2=string2
DATEINAME=test1.txt

grep "^application -x" ${DATEINAME} >/dev/null 2>&1
if [ "$?" = "0" ]; then
        echo "application -x schon vorhanden - Zeile ersetzen"
        > ${DATEINAME}.tmp
        sed -e "s/\(^.*application -x .*$\)/application -x ${VARIABLE1} ${VARIABLE2}/" ${DATEINAME} >> ${DATEINAME}.tmp
        cat ${DATEINAME}.tmp > ${DATEINAME}
else
        echo "application -x noch nicht vorhanden - Zeile angefügt"
        echo "application -x ${VARIABLE1} ${VARIABLE2}" >> ${DATEINAME}
fi
 
Oben