Text löschen

Dieses Thema im Forum "Scripting und Automatisierung" wurde erstellt von macwoif, 23.05.2006.

  1. macwoif

    macwoif Thread Starter MacUser Mitglied

    Beiträge:
    38
    Zustimmungen:
    0
    MacUser seit:
    11.12.2003
    Guten Abend!

    Ich habe ein ansich einfaches Problem, komme jedoch auf keine (funktionierende) Lösung:

    * ich will eine Textdatei zeilenweise durchsuchen
    * wenn ein bestimmtes Wort nicht vorkommt soll die Zeile gelöscht werden

    Wie könnte ich das möglichst einfach lösen?

    Danke,
    macwoif
     
  2. w2lab

    w2lab MacUser Mitglied

    Beiträge:
    125
    Zustimmungen:
    1
    MacUser seit:
    21.02.2006
    set eingabe to "'/pfad/eingabe.txt'"
    set temp to "'/pfad/temp.txt'"
    do shell script "more " & eingabe &" | grep -v bestimmtesWort > " & temp &";mv " & temp & " " & eingabe
    -- grep -v, --invert-match
    -- für "/pfad/"-Angabe, Datei in Skripteditor ziehen
     
  3. macwoif

    macwoif Thread Starter MacUser Mitglied

    Beiträge:
    38
    Zustimmungen:
    0
    MacUser seit:
    11.12.2003
    Danke für deinen Tip - leider bekomm ich das nicht zum laufen:
    fehlermeldung sh: -c line 1: unexpected EOF while looking for matching
    und sh: -c: line 2: syntax error: unexpected eof

    leider blick ich bei den terminal-befehlen nicht so ganz durch, kennt jemand eine lösung mit applescript direkt? hab da zwar schon ansätze, aber es löscht nicht wie gewünscht.

    macwoif
     
  4. chebfarid

    chebfarid MacUser Mitglied

    Beiträge:
    894
    Zustimmungen:
    75
    MacUser seit:
    05.10.2005
    Ciao macwolf,
    ein Ansatz mit reinen AS-Mitteln ist der folgende:
    -------------------------
    [This script was automatically tagged for color coded syntax by Convert Script to Markup Code]

    Statt den zu bearbeitenden Text zu "hardcoden" kannst Du ihn natürlich auch aus einem File in die Variabile "myText" einlesen.

    Frohes scripten
    Farid
     
    Zuletzt von einem Moderator bearbeitet: 24.10.2015
  5. macwoif

    macwoif Thread Starter MacUser Mitglied

    Beiträge:
    38
    Zustimmungen:
    0
    MacUser seit:
    11.12.2003
    hallo!

    genau das wäre auch mein ansatz gewesen! in der betreffenden .txt ändert sich jedoch bei einem durchlauf nichts.
    Skript ist bei jetzt wie folgt:

    set theWord to "Unknown application"
    set nutzer to do shell script "whoami"
    set pfad to ":Users:" & nutzer & ":Desktop:originaldatei.txt" as string
    set myText to open for access file pfad with write permission
    set newText to ""
    set countP to count of paragraphs of myText
    repeat with i from 1 to countP
    set thisPar to paragraph i of myText
    if theWord is in thisPar then
    write newText & return to thisPar in myText
    end if
    end repeat

    close access myText

    gelöscht wird aber nicht !?!?!!?!
    das problem ist ja eigentlich wirklich simpel - aber es funktioniert einfach nicht: "wenn zeile der datei bestimmtes wort enthällt->lösche die Zeile"

    macwoif
     
  6. chebfarid

    chebfarid MacUser Mitglied

    Beiträge:
    894
    Zustimmungen:
    75
    MacUser seit:
    05.10.2005
    Ciao macwolf,
    vielleicht liegt das Problem darin, dass Du sofort in den gleichen Textfile schreiben willst, aus dem der Originaltext stammt. Ich glaube es ist besser, den korrekten Text in die Variabile newText zu schreiben und erst am Ende den neuen Textfile zu erstellen.

    Zweites Problem: read/write sind "Finder"-Kommandos - Du musst diese Scriptbefehle in einen Finder-"Tell"-block packen.

    Drittes Problem: Du musst den Originalfile nicht nur oeffnen, sondern auch seinen Inhalt in myText einlesen:
    Code:
    set startFile to (open for access file pfad with write permission)
    set myText to read startFile
    ...
    Am Ende Deines repeat loops kannst Du dann den neuen Text in "startFile" (oder in einen ganz neuen File) schreiben:
    Code:
    write newText to startFile
    close access startFile
    Hab' jetzt leider keine Zeit, kann das ganze heute abend mal kontrollieren.

    Frohes schaffen
    Farid
     
  7. chebfarid

    chebfarid MacUser Mitglied

    Beiträge:
    894
    Zustimmungen:
    75
    MacUser seit:
    05.10.2005
    Ciao macwolf,
    vergiss, was ich über das Kommando read/write und den Finder geschrieben habe: war Stuss :p

    So geht's jedenfalls ("origFile" und "newFile" mußt Du mit Deinen Pfaden updaten):
    Frohes schaffen
    Farid
     
  8. macwoif

    macwoif Thread Starter MacUser Mitglied

    Beiträge:
    38
    Zustimmungen:
    0
    MacUser seit:
    11.12.2003
    Vielen Dank für deine Mühe Farid,

    es funktioniert jetzt genau so wie gewünscht!

    Milan / Maldini-Fan?

    gruß und dank
    macwoif
     
  9. chebfarid

    chebfarid MacUser Mitglied

    Beiträge:
    894
    Zustimmungen:
    75
    MacUser seit:
    05.10.2005
    Wohnortbedingt seit 15 Jahren - mit meiner Jugendliebe aus Köln ist ja in der BL und international kein Staat mehr zu machen ;)

    Saluti
    Farid
     
Die Seite wird geladen...

Diese Seite empfehlen