1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

AppleScript-Beispiele

Dieses Thema im Forum "AppleScript" wurde erstellt von pete, 29.01.06.

  1. pete

    pete Gast

    X
     
    #1 pete, 29.01.06
    Zuletzt von einem Moderator bearbeitet: 20.06.06
    zause und stk gefällt das.
  2. Daisy

    Daisy Uelzener Rambour

    Dabei seit:
    14.01.06
    Beiträge:
    366
    Hi pete,

    cool - aber wie Du schon bei 'sort' gemerkt hast, lohnt es sich oft, bei den Shell-Befehlen nachzuschauen. Auch dafür gibt's was Praktisches in der Shell: 'sed' - lies dich mal in die man-Page ein. Das löst Aufgaben wie diese mit' nem Einzeiler ;)

    für die erste Aufgabe:

    sed 's|A|B|g' (wobei in diesem Beispiel alle As durch Bs ersetzt werden - geht natürlich auch mit anderen Zeichen oder Strings bzw. mit Regular Expressions)

    und für die zweite Aufgabe:

    sed 's|^[\ ]*||' löscht die Leerzeichen vor ...
    und
    sed 's|[\ ]*$||' nach dem String
    und
    sed 's|\ [\ ]*|\ |g'* ersetzt alle Mehrfach-Leerzeichen durch ein einzelnes.

    Wie Du das in ein AppleScript einbaust, weisst Du ja ...

    *(eigentlich sollte das auch mit sed 's|[\ ]+|\ |g' gehen, hat aber bei mir nicht fuktioniert - weiss jemand, warum?)

    Andere Shell-Befehle, die ich für ähnliche Zwecke empfehlen könnte, wären z.B. 'grep' oder 'awk' - schau einfach mal in die man-Page ...


    Grüße,

    Daisy
     
    stk gefällt das.
  3. Skeeve

    Skeeve Pomme d'or

    Dabei seit:
    26.10.05
    Beiträge:
    3.121
    Und wenn man schon dabei ist... Warum nicht gleich, statt 2 Kommandos (sed und awk) zu lernen, nur eines: perl...

    Code:
    perl -pe 's/A/B/g'
    oder auch
    Code:
    perl -pe 'tr/A/B/'
    Code:
    perl -pe 's/^ +//'
    Code:
    perl -pe 's/ +$//'
    Code:
    perl -pe 's/  +/ /g'
    und alles zusammen
    Code:
    perl -pe 's/^ +//; s/ +$//; s/  +/ /g';
    Ich empfehle immer perl anstelle sed/awk, weil Du damit dasselbe machen kannst, und noch deutlich mehr. Die Komplexität des Erlernens ist - finde ich - gleich, die Mächtigkeit perls aber ungleich höher.
     
  4. Daisy

    Daisy Uelzener Rambour

    Dabei seit:
    14.01.06
    Beiträge:
    366
    Moin,

    du bist ja sooo fleissig - schöne neue Routine, vielen Dank!
    Vielleicht könnte man das Problem der allzu häufigen (und teilweise unnötigen) Aufrufe umgehen, indem du das davor setzt:

    Code:
    to getRange(thisList, startVal, endVal)
    	try
    		return (items startVal thru endVal of thisList)
    	on error
    		return (items itemNr(thisList, startVal) thru itemNr(thisList, endVal) of thisList)
    	end try
    end getRange
    
    set thisList to {"BMW", "Mercedes", "Ford", "Opel"}
    getRange(thisList, 2, -1) -- ruft deine Routine nicht auf
    getRange(thisList,-33,588) -- ruft sie auf

    Grüße,

    Daisy
     
  5. Daisy

    Daisy Uelzener Rambour

    Dabei seit:
    14.01.06
    Beiträge:
    366
    Bekommst mal wieder ein großes Lob für deine schönen Beispiele, pete :)

    schade eigentlich, dass Apple bei Boolean-Variablen nicht eine automatische Umwandlung in number oder integer ermöglicht hat:

    set boolVal to true
    get 4711 * boolVal

    wäre ja doch eigentlich eine logische Fortführung der Applescript-typischen laxen Handhabung von Coercions, oder?

    (Vielleicht sollte man das mal anregen ...?)


    Grüße,

    D.
     
  6. Daisy

    Daisy Uelzener Rambour

    Dabei seit:
    14.01.06
    Beiträge:
    366
    na hier denke ich, unter OS X - oder gibt's für AppleScript da eine extra-Stelle?:

    http://www.apple.com/feedback/

    Grüße,

    D. ;)
     

Diese Seite empfehlen