Property List Dict / Array Unterelement einzeln auslesen

F

franky83

Aktives Mitglied
Thread Starter
Dabei seit
05.12.2007
Beiträge
563
Reaktionspunkte
35
Hallo ich steh schon wieder mal auf m Schlauch aber vielleicht ist es auch so nicht möglich.

Ich möchte gerne ein Dict/Array Element aus einer Property List auslesen und nicht das gesamte Dict/Array zurückbekommen.

Code:
defaults read com.apple.krams Dict

Hier bekomme ich alle Elemente und deren Werte des Dict's zurück.
Möchte aber nur ein bestimmtes Unterelement. Möglich?

Code:
defaults read com.apple.krams Dict["item1"]

Gruß Franky
 
Ich habe es jetzt mit awk gelöst aber dennoch ein Problem. Vielleicht weiß jemand von euch dabei eine Lösung.

Da ich in der plist Ordnerpfade als String ablege, kommt die bash damit irgendwie nicht klar.

Bsp.:
Pfad als String in der plist:
Code:
/Volumes/BlackBook/Musik\ Bibliothek/Alben\ \&\ Sampler/

Pfad der plist über bash ausgelesen:
Code:
/Volumes/BlackBook/Musik\\\\ Bibliothek/Alben\\\\ \\\\&\\\\ Sampler/

Aufgrund dessen habe ich die backslashes vor Leerzeichen und Sonderzeichen weggelassen (/Volumes/BlackBook/Musik Bibliothek/Alben & Sampler/) und versuche nun diese via awk einzufügen.

Code:
thearray=(`defaults read com.meine.myplist | grep New_item\" | awk '{$1=$2="";gsub(";","");gsub("\"","");gsub("\ \ ","");gsub("\ ","\\\ ");print}'`)
echo "${thearray[0]}"

Ergebnis:
Code:
/Volumes/BlackBook/Musik\ Bibliothek/Alben\ &\ Sampler/

Problem: Wie bekomme ich vor das & auch ein \ ? gsub("&","\\&") funktioniert nicht.
 
"funktioniert nicht" ist die schlechteste Fehlerbeschreibung der Welt.
awk finde ich für so eine fast schon zu kompliziert und schwer lesbar.
Mit sed geht es so:
Code:
echo "Hallo & Test" | sed -e 's/&/\\&/'
 
Warum werden die Pfade escaped in die plist geschrieben?
Den Fehler würde ich erstmal beheben.
 
Zurück
Oben Unten