Benutzerdefinierte Suche

Text löschen

  1. macwoif

    macwoif Thread StarterMacUser Mitglied

    Mitglied seit:
    11.12.2003
    Beiträge:
    38
    Zustimmungen:
    0
    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
     
    macwoif, 23.05.2006
  2. w2lab

    w2labMacUser Mitglied

    Mitglied seit:
    21.02.2006
    Beiträge:
    125
    Zustimmungen:
    1
    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
     
    w2lab, 24.05.2006
  3. macwoif

    macwoif Thread StarterMacUser Mitglied

    Mitglied seit:
    11.12.2003
    Beiträge:
    38
    Zustimmungen:
    0
    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
     
    macwoif, 24.05.2006
  4. chebfarid

    chebfaridMacUser Mitglied

    Mitglied seit:
    05.10.2005
    Beiträge:
    894
    Zustimmungen:
    75
    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
     
    chebfarid, 25.05.2006
  5. macwoif

    macwoif Thread StarterMacUser Mitglied

    Mitglied seit:
    11.12.2003
    Beiträge:
    38
    Zustimmungen:
    0
    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
     
    macwoif, 25.05.2006
  6. chebfarid

    chebfaridMacUser Mitglied

    Mitglied seit:
    05.10.2005
    Beiträge:
    894
    Zustimmungen:
    75
    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
     
    chebfarid, 25.05.2006
  7. chebfarid

    chebfaridMacUser Mitglied

    Mitglied seit:
    05.10.2005
    Beiträge:
    894
    Zustimmungen:
    75
    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
     
    chebfarid, 25.05.2006
  8. macwoif

    macwoif Thread StarterMacUser Mitglied

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

    es funktioniert jetzt genau so wie gewünscht!

    Milan / Maldini-Fan?

    gruß und dank
    macwoif
     
    macwoif, 25.05.2006
  9. chebfarid

    chebfaridMacUser Mitglied

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

    Saluti
    Farid
     
    chebfarid, 25.05.2006
Die Seite wird geladen...