Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Entwickler>Unix Command

Unix Command

m.yellow19.11.0812:46
Hallo an alle Unix-Commandline-Kenner!

Ich möchte mir ein Applescript basteln, welches mit Hilfe der Toodledo-API meine Tasks per Growl ausgibt. Soweit so gut, nur liefert der zugehörige Befehl 'toodledo tasks', den ich mittels

set all_tasks to do shell script "/usr/bin/toodledo tasks" as text

aufrufe folgendes Format zurück:

<7304841> -- !high @[uni] #[12/05/2008 12:00 AM] Der_Todo_Text

<Todo-Nr> -- !Priorität @[Kontext] #[Datum UZeit] Task

da das nicht sonderlich schön aussieht, würde ich es gerne formatieren. Ich hab mal wo aufgeschnappt dass das glaub ich mittels "grep" oder ähnlichem cmd möglich ist, nur weiß ich leider nicht wie ich das Format angeben soll.

set all_tasks to do shell script "/usr/bin/toodledo tasks | grep ?????" as text

Hoffe mir kann jemand helfen,
Danke im Voraus
0

Kommentare

apfelmuss19.11.0813:14
grep bringt wahrscheinlich nichts. awk erscheint mir an dieser Stelle besser.

So sollte folgender Befehl:

set all_tasks to do shell script "/usr/bin/toodledo tasks | awk '{print $1}'" as text

die Todo-Nr. allerdings noch mit den Klammern liefern.

0
iCode
iCode19.11.0813:26
Folgende 3 Anregungen:

1. Schau Dir mal intesiv die man-Pages dieses "toodledo" an. Eigentlich sollte ein Tool so was selbst können.

2. Wenn "toodledo" das nicht kann, dann sollte imho sed oder awk das Werkzeug deiner Wahl sein.

3. Mache Dich auch mit Regulären Ausdrücken vertraut.
0
m.yellow19.11.0813:42
danke für eure kommentare, awk scheint mir das geeignete mittel zu sein ... werde mal schaun ob ich mich damit anfreunden kann, vorerst danke!
0
Resistance19.11.0813:50
/usr/bin/toodledo tasks | awk ' { printf "%d %s %s %s %s%s %s\n", substr($1,2), substr($3,2), substr($4,3,length($4)-3), substr($5,3),$6,tolower(substr($7,1,length($7)-1)), $8 } '

erzeugt eine Spaltenliste ohne Leerzeichen, die einfach weiterverarbeitet werden kann. Der Todo-Text muß allerdings als "1 Wort" auftauchen (so wie im Bespiel) sonst sind noch Änderungen notwendig.

0
m.yellow19.11.0814:06
Ok, eine Kombination aus awk und sed scheint für mich passend zu sein ...

der vorbereitende sed - Kommand will aber nicht ganz so wie ich will ...ich will schrittweise die Sonderzeichen aus dem Text entfernen, damit ich dann bei awk mit $1, $2 etc. nur den entsprechenden text bekomme.

Beispieltext:
<7339615> -- !high @[uni] #[12/05/2008 12:00 AM] TODO


sed 's/[\[\<\>!@#-]//g'

liefert bei mir

7339615 high uni] 12/05/2008 12:00 AM] TODO

soweit so gut, wenn ich jetzt aber "]" auch noch entfernen möchte und mit \] kodiere, geht plötzlich nichts mehr ....

sed 's/[\[\<\>!\]@#-]//g'

liefert wieder

<7339615> -- !high @[uni] #[12/05/2008 12:00 AM] TODO

also den unveränderten Text ...

Woran könnte das liegen bzw. was mach ich falsch?
0
m.yellow19.11.0814:29
Resistance

hab deinen Beitrag irgendwie überlesen ... das funktioniert super, danke!!

der text ist allerdings länger als ein wort, kann das notbedürftig ja mit print .... %s %s %s %s , $9, $10, $11, $12 ausgeben und die anzahl der worte so beschränken, aber gibts vl auch eine möglichkeit alle auszugeben?
0
iCode
iCode19.11.0815:15
Du kannst mal versuchen $8 hierdurch zu ersetzen.
substr($0,index($0,"M] ")+3)
0
iCode
iCode19.11.0816:36
Bei sed kannst Du die Klammern auch in Hochkomma setzten.
ed 's/['\]\['<>!@#-]//g'

0
m.yellow20.11.0817:50
danke für eure hilfe!
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.