Ich bin neu hier und ich habe ein Problem, das ich nicht herausfinden kann. Ich versuche, eine Zeile in der * .txt-Datei durch fast dieselbe Zeile zu ersetzen, aber geändert. Ich bekomme immer noch Fehler oder Ausgabedatei ist ohne die Änderung. Kannst du mir bitte helfen?Sed ersetzt Linie mit Linie von Variable
Script:
var1=`grep "keyS.log\" type=" /C/tst/tst.txt`
x="<\!--"
if echo "$var1" | grep -q "$x"; then
echo "Already disabled";
else
prefix='<!-- '
sufix='-->'
modified=`echo "${var1/[[:space:]]/}" | sed 's:^.\(.*\).$:\1:'`
final="${prefix}${modified}${sufix}"
echo "${final}"
`sed -i 's/${var1}/${final}/g' /C/tst/tst.txt`
fi
Line I in der Datei zu ändern versuchen ist wie folgt:
<category="keyS" priority="1" appender="/tmp/keyS.log"/>
und so sein sollte:
<!-- category="keyS" priority="1" appender="/tmp/keyS.log"/-->
Es gibt mehr Linien beginnend mit der Kategorie und es kann verschiedene Wege hinter dem Appender geben = so ist es dynamisch.
Fehler ist wie: sed: 1: "/C/tst/tst.txt": undefined label 'st/tst.txt'
Als ich
cat /C/tst/tst.txt | sed 's/${var1}/${final}/g' >> /C/tst/tsttmp.txt
Linie zu verwenden versucht, wird in tsttmp.txt nicht geändert und ich habe auch den Zeilenabstand verloren, so dass der ganze Text eine Zeile ist.
Vielen Dank im Voraus für jede Hilfe
Stanislav