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

do shell script "sort" schaff ich nicht

Dieses Thema im Forum "AppleScript" wurde erstellt von Goar, 11.02.06.

  1. Goar

    Goar Gast

    Hallo zusammen,

    vor ein paar Tagen bin ich auf "do shell script" gestoßen und versuche jetzt an einigen Beispielen die Syntax aus.

    Den Befehlsübersichten zufolge, dich ich bisher durchforstet habe, müsste mein Skript funktionieren:
    ---
    set sortTest to do shell script "sort -n " & POSIX path of fullSortPath
    ---
    Ich bekomme aber den Dateiinhalt (unsortierte, 5- oder 6stellige Zahlen, return-getrennt) unverändert zurück.
    Ebenfalls bei diesem Versuch:
    ---
    do shell script "cd " & sortPath & "; sort -nr " & POSIX path of sortFile
    ---

    Mache ich da etwas falsch oder irgendwo etwas um-/einstellen, damit es klappt?
    iMac G5, OS 10.4.4

    Über eine allgemein verständliche Antwort würde ich mich freuen.

    Gruß, Goar
     
    1 Person gefällt das.
  2. Daisy

    Daisy Uelzener Rambour

    Dabei seit:
    14.01.06
    Beiträge:
    366
    Moin,

    ich denke, der erste Hinweis von Pete trifft (das return/lf - problem). Ich bin da auch schon öfter mal mit 'grep'-Versuchen o.ä. bei Mac-Textfiles reingedopst ;)
    Noch ein Tipp (wurde im Forum auch schon öfter mal erwähnt): Um Probleme mit Leer- oder Sonderzeichen in den POSIX-paths zu vermeiden, solltest du hier immer wenn's geht 'quoted form of' verwenden. Das Script könnte also so funktionieren (ungetestet):

    Code:
    do shell script "cat " & quoted form of (POSIX path of fullSortPath) & " | perl -pe 's/\r/\n/g' | sort -n"
    Grüße,

    Daisy
     
    1 Person gefällt das.
  3. Goar

    Goar Gast

    Moin moin,

    zunächst mal vielen Dank für Eure umfangreiche Hilfe.
    Am Anfang fehlts doch an allen Ecken, alles Sachen, über die man nach einiger Übung wohl gar nicht mehr nachdenkt.
    Mit pete's erstem Hinweis return/lf war der Knoten durchgeschlagen. Ich hatte es zwar schon auf Apples Developer-Seite gelesen, aber wohl nicht ganz für ernst genommen.

    Auch das hatte ich auf der Developer-Seite (glaub' ich) gelesen. Bei meinem ersten Versuch mit lf habe ich das Ergebnis allerdings in eine Datei gesichert und da wurden die lf nicht in return umgewandelt; deshalb habe ich dafür noch einmal tr bemüht. Eben habe ich das Ergebnis direkt nach dem sort in eine Variable gespeichert und da wird lf tatsächlich in return gewandelt.

    @ pete
    Was Pfade und Dateinamen angeht, waren meine ersten Versuche daneben. Beim Ersten war die Absicht, den Pfad incl. Dateinamen in der Variablen zu haben, im zweiten Versuch sollte nur der Dateiname in der Variablen stehen, daher der vorhergehende Wechsel des Verzeichnisses, aber eben nicht "ganz richtig".

    Im Terminal sah die Zeile dann etwa so aus (und es klappte, juchu):
    Code:
    cd /zum/Zielordner/wechseln; tr "\r" "\n" < ArtNr117.txt | sort -n | tr "\n" "\r" > ArtNr117_sort
    Da der Skripteditor die returns und lf leider in ihre Ausführung übersetzt (das gilt auch für die Perl-Passage), habe ich es vorgezogen diese Elemente auszuschreiben, weshalb meine Skriptzeile so aussieht:

    Code:
    -- mit cd und sichern in Datei
    do shell script "cd " & quoted form of (POSIX path of savepath) & "; tr \"" & return & "\" \"" & (ASCII character 10) & "\" < " & sourceFile & " | sort -n > & targetFile
    -- alternativ mit cat und speichern in Variable
    set allText to do shell script "cat " & quoted form of (POSIX path of fullSavePath) & " | tr \"" & return & "\" \"" & (ASCII character 10) & "\" | sort -n"
    Gibts da jetzt - unter Berücksichtigung meines Anfängerlevels - noch etwas zu verbessern? Jedenfalls ist es rattenschnell, mit bloßem Auge konnte ich den Unterschied zwischen einer 2tausend- und einer 117tausendzeiligen Testdatei nicht wirklich feststellen.

    @ Daisy
    Perl mit in AS einzubinden ist für mich ein ziemlich neuer Hinweis. Meine Reaktionszeiten sind da zwar etwas länger, zumal ich gerade mit Shell angefangen habe, aber so richtig hoffnungslos bin ich nicht.

    Gruß, Goar
     

Diese Seite empfehlen