mit 'sed' Strings in *.plist ersetzen...

Killroy007

Neues Mitglied
Thread Starter
Dabei seit
02.09.2007
Beiträge
17
Reaktionspunkte
0
Hallo zusammen,
hier im Forum scheint es ja einige 'sed command' Spezialisten zu geben. Vielleicht kann mir jemand bei meinem Problem helfen.
Ich möchte in meinen Installer die Info.plist mit sed einige Einträge ersetzen. Leider komme ich da nicht weiter. Durch die Sonderzeichen >/ etc. in dem String bekomme ich immer Fehlermeldungen. Gibt es eine Möglichkeit um mit sed einen String, unabhängig von Sonderzeichen etc. zu ändern?

Beispiel:
<key>IFPkgFlagInstalledSize</key>
<integer>4</integer>

Die 4 soll z. B. in 1024 ersetzt werden, wobei der gesamte String berücksichtigt werden muss, da z. B. die 4 häufiger in der plist auftauchen kann.

Danke & Gruß
 
Damit wird aber jede 4 durch 1024 ersetzt, was ja (logischerweise) nicht das ist, was der Threadstarter wollte.

Mit sed würde ich so etwas nicht machen, da sed ja im Normalfall zeilenweise liest und verarbeitet, auch wenn es Tricks gibt, Dein Ziel zu erreichen.
Ich persönlich würde ein kleines Perlskript schreiben.

Wenn die betreffende Zeilen in einer Datei nur einmal vorkommen können ist es aber auch mit sed einfach:
Code:
sed -e '/<key>IFPkgFlagInstalledSize<\/key>/,/<integer>4<\/integer>/s/4/1024/' [I]file[/I]

Scheint sogar bei mehrfachen Vorkommen einwandfrei zu funktionieren :D.
Da würde ich mich aber nicht unbedingt darauf verlassen.
Edit: Doch, kann man sich darauf verlassen. Ist in der manpage dokumentiert.
 
Zuletzt bearbeitet:
Hallo maceis,
genau, die 4 allein hab ich hinbekommen. War aber nicht Sinn der Sache.
Deine Variante funktioniert perfekt, vielen Dank. Hab da aber noch ein kleines Problem.... die 1024 ist nur ein Beispiel, den tatsächlichen Wert habe ich in einer Variablen..

sed -e '/<key>IFPkgFlagInstalledSize<\/key>/,/<integer>4<\/integer>/s/4/$SIZE/' -i "" "$EDIT_PATH/$PLIST/$PLIST.pkg/Contents/Info.plist"

Das geht wohl nicht direkt vermute ich, oder etwa doch? :confused:

Gibt es eigentlich außer der manpage noch eine andere Doku über 'sed' vielleicht als PDF. Das commando ist doch sehr umfangreich.

Danke & Gruß
 
Zuletzt bearbeitet:
Es gibt ganze Bücher über sed, awk und Konsorten. Auch im Internet gibt es massig Info. Auf Gurgel muss ich wohl nicht hinweisen, oder ;)?

Dass $SIZE nicht expandiert wird, liegt hier natürlich daran, dass mein sed Kommando in einfachen ' steht. Ersetze die durch doppelte " und auch die Variablenersetzung funktioniert.
 
Hi maceis,
" hatte ich probiert, hab aber wohl einen Fehler gemacht :mad: . Hab es jetzt noch einmal mit " in mein Script neu eingebaut und es funktioniert. :)
Vielen Dank für Deine Hilfe
 
Zurück
Oben Unten