bestimmte Strings herausfiltern, mit PHP geht's

Diskutiere mit über: bestimmte Strings herausfiltern, mit PHP geht's im Scripting und Automatisierung Forum

  1. vik

    vik Thread Starter MacUser Mitglied

    Beiträge:
    143
    Zustimmungen:
    0
    Registriert seit:
    20.06.2005
    Hallo Leute.

    Ist es eigentlich mit AppleScript möglich bestimmte Stings herauszufiltern.

    Z.B. wenn ich aus einem file nur Zeilen die mit "@t" beginnen in einem anderen Dokument abspeichern, dann "@t" löschen und zwischen jeder Zeile eine Leerzeile einfügen möchte.

    Vielen Dank

    Gruß
     
  2. Incoming1983

    Incoming1983 MacUser Mitglied

    Beiträge:
    7.597
    Zustimmungen:
    1
    Registriert seit:
    23.07.2005
    such mal in der Doku nach regulären Ausdrücken.

    Kann leider kein AppleScript.

    Edit: Für solche Dinge (und noch viel mehr) ist Perl übrigens geeignet.
     
  3. chebfarid

    chebfarid MacUser Mitglied

    Beiträge:
    894
    Zustimmungen:
    75
    Registriert seit:
    05.10.2005
    Mit "Vanilla AppleScript" ist das machbar aber etwas muehselig - sehr viel einfacher waere es ein AppleScript fuer ein echtes Textprogramm, wie z. B. BBEdit zu schreiben.
    Nur mit AS-Bordmitteln ist die Prozedur in etwa folgende:
    Code:
    tell application "Finder"
    set myText to read file [Pfad_zum_Textfile]
    end tell
    set newText to ""
    set countP to count of paragraphs of myText
    repeat with i from 1 thru countP
    if characters 1 thru 2 of paragraph i of myText = "@t" then
    set newText to (newText & (paragraph i of myText) & return)
    end if
    end repeat
    -- jetzt muessten wir in der Variable "newText" alle Zeilen abgespeichert haben, die im Originaltext mit "@t" beginnen
    -- Schritt 2: Kreation eines neuen Textes, in dem alle "@t" durch "" ersetzt werden:
    set finalText to ""
    set countP to count of paragraphs of newText
    repeat with j from 1 thru countP
    set newLine to (characters 3 thru -1 of (paragraph j of newText) & return)
    set finalText to (finalText & newLine)
    end repeat
    -- Die Variabile "finalText" enthaelt das Resultat der Textoperationen.
    -- Du kannst sie in einen neuen File oder ins Clipboard schreiben
    
    Das ganze ist aus dem Stand und auf einer Windose geschrieben - also ohne Gewaehr - einfach mal ausprobieren ;)

    Frohes scripten
    Farid
     
  4. vik

    vik Thread Starter MacUser Mitglied

    Beiträge:
    143
    Zustimmungen:
    0
    Registriert seit:
    20.06.2005
    hallo chebfarid!

    vielen dank für deinen ausführlichen lösungsweg.
    sag mal, wie kommt es dazu, dass du dich so gut mit as auskennst und am pc arbeitest? ... und kannst du mir auch möglicherweise ein AppleScript-buch empfehlen?
    Gruß
     
  5. chebfarid

    chebfarid MacUser Mitglied

    Beiträge:
    894
    Zustimmungen:
    75
    Registriert seit:
    05.10.2005
    MacUser seit 12 Jahren aber leider kann man nicht immer seinen Arbeitgebern die Wahl der Produktionsmittel vorschreiben ;)
    Was das Buch angeht: imho das beste auf dem Markt ist "Matt Neuburg - AS the definitive guide".

    Frohes scripten
    Farid
     
  6. vik

    vik Thread Starter MacUser Mitglied

    Beiträge:
    143
    Zustimmungen:
    0
    Registriert seit:
    20.06.2005
    hallo
    leider klappt es nicht ganz mit dem Script. Ich habe aber dieses BBEdit Lite 6.1 (freeware) auf der Platte. Wenn es damit einfacher ist - ist mir auch recht.
     
  7. chebfarid

    chebfarid MacUser Mitglied

    Beiträge:
    894
    Zustimmungen:
    75
    Registriert seit:
    05.10.2005
    Hier ein Script, mit dem ich BBEdit ganze Ordner nach bestimmten Strings durchsuchen und die gefundenen Strings mit einem neuen Text ersetzen lasse. (Praktisch, wenn man z.B. einen Link in zig Html-Seiten aktualisieren will):
    Code:
    tell application "Finder"
    	activate
    	set f to (choose folder) as alias
    	set theFiles to every item of f
    	set c to count of theFiles
    	
    	display dialog "Inserisci il testo da trovare/sostituire:" default answer "" with icon 1
    	set searchstring to text returned of the result
    	
    	display dialog "Inserisci il testo di sostituzione:" default answer "" with icon 1
    	set replacestring to text returned of the result
    	
    	repeat with i from 1 to c
    		set myFile to item i of theFiles as alias
    		tell application "BBEdit"
    			activate
    			open myFile
    			tell window 1 of application "BBEdit"
    				replace searchstring using replacestring
    			end tell
    			close window 1 saving yes
    		end tell
    	end repeat
    end tell
    Das Script sollte sich ohne Probleme auch für einzelne Textfiles umstricken lassen. Wenn Du nicht weiter kommen solltest, laß es mich wissen.

    Frohes scripten
    Farid
     
  8. vik

    vik Thread Starter MacUser Mitglied

    Beiträge:
    143
    Zustimmungen:
    0
    Registriert seit:
    20.06.2005
    (* für Testzwecke bitte in TextEdit einfügen:
    @t zeile 1
    @e zeile 2
    @t zeile 3
    @b zeile 4
    @u zeile 5
    @t zeile 6
    @4 zeile 7
    @t zeile 8
    @t zeile 9
    ----------
    Ausgabe:
    zeile 1
    zeile 3
    zeile 6
    zeile 8
    zeile 9
    *)

    guten Abend,

    ich habe es jetzt mit TextEdit soweit geschafft, dass das geöffnete Dokument richtig gefiltert wird.
    Code:
    set gefiltert to ""
    
    tell application "TextEdit"
    	activate
    	set inhalt to every paragraph of text of document 1
    	set fileName to the name of document 1
    	-- display dialog fileName
    end tell
    
    repeat with i from 1 to (count inhalt)
    	set Zeile to item i of inhalt
    	
    	
    	-- if ((item 2 of Zeile exists) and (item 2 of Zeile = "t")) then
    	(* wenn dokument eine leere zeile hat - bekomme ich eine fehlermeldung¬
    	wie vermeide ich so was? *)
    	if ((item 2 of Zeile ? "") and (item 2 of Zeile = "t")) then
    
    		-- lösche @t
    		set newZeile to "" & (get text 3 through (count Zeile) of Zeile) 
               -- gefiltertes zusammen
    		set gefiltert to (gefiltert & newZeile & return)
    		
    	else if item 2 of Zeile = "" then
    		
    	else
    		
    		-- exit repeat -- bringt bei Leerzeilen nur Abbruch des Scripts (falsch)
    	end if
    	get gefiltert -- Ausgabe für ScriptEditor nur Test
    	
    	
    end repeat
    
    tell application "TextEdit"
    	make new document at the beginning
    	set the text of the front document to gefiltert
    	close front window saving in file saving ask -- wie ich den namen fileName für das neue Dok einsetze  - keine Ahnung
    end tell
    jetzt habe ich noch einpaar Fragen:

    1. ich möchte das Ganze gerne als Programm abspeichern so, dass ich nur meine Files drauf ziehen brauche und es wird im neuen UnterOrdner "x" eine gefilterte Version meiner Daten mit dem gleichen Namen erscheinen.

    Als Ordneraktion ist auch gut. Sogar mit einem Finder-Plug-in kann ich leben. Aber jedes einzelne Dok aufzurufen und dann noch den Namen zu vergeben ist mit zu viel. Hat jemand Vorschläge?

    2. wenn mein Dokument Leerzeilen hat - wird das Script unterbrochen. Wie löse ich das Problem. Ist aber nicht so wichtig, da in meinen Files keine Leerzeilen vorkommen. Da muss ich irgendwie aus der Schleife raus ohne sie abzubrechen...
     
  9. chebfarid

    chebfarid MacUser Mitglied

    Beiträge:
    894
    Zustimmungen:
    75
    Registriert seit:
    05.10.2005
    Ciao Vik,
    ich habe Deinen Beispieltext so verstanden, daß der zu erstzende Text immer die Form "@x " hat (aber in jedem Fall kannst Du das leicht an andere Strings anpassen)
    Wenn Du Dein Skript mit der Zeile "on open [reference]" beginnst und mit "end open" beendest und es dann als Application" speicherst, erhältst Du ein Droplet, auf das Du die Files ziehen kannst, die Du bearbeiten willst.
    Code:
    on open myFiles
    	set p to (path to desktop)
    	-- Der Ordner "TestFolder" muß vorher auf dem Schreibtisch angelegt werden, sonst signalisiert AS einen Fehler
    	set savepath to (p as string) & "TestFolder:"
    	
    	-- die Liste "myFiles" enthält alle Files, die auf das Script "gedragt" worden sind, mit der Variabile "aFile" werden sie jetzt einer nach dem anderen abgearbeitet
    	repeat with aFile in myFiles
    		tell application "TextEdit"
    			open aFile
    			set n to name of document 1
    			set myText to text of document 1
    			set newText to ""
    			set numPars to count of paragraphs of myText
    			repeat with i from 1 to numPars
    				if (paragraph i of myText is not "") and (character 1 of paragraph i of myText = "@") then
    					set newText to (newText & (characters 4 thru -1 of paragraph i of myText) & return)
    				else
    					set newText to (newText & (paragraph i of myText) & return)
    				end if
    				
    			end repeat
    			
    			set newDoc to (make new document at the beginning)
    			set the text of the front document to newText
    			set completeSavepath to (savepath & n)
    			close newDoc saving in completeSavepath
    			close document 1
    		end tell
    	end repeat
    end open
    Eventuelle Leerzeilen machen mir kein Problem, ich habe sie allerdings 1:1 in den neuen Text übernommen, Du wolltest sie löschen?

    Frohes scripten
    Farid
     
  10. vik

    vik Thread Starter MacUser Mitglied

    Beiträge:
    143
    Zustimmungen:
    0
    Registriert seit:
    20.06.2005
    endlich hat es geklappt!

    vielen vielen dank. dieses script ist doch der hammer. habe, wie du sagtest, dein script ein bisschen an meine vorstellung angepasst und als programm agbespeichert. es läuft, wie es sein muss! jetzt kann ich es bestimmt auch als OrdnerAktion verwenden, oder muss es noch modifiziert werden?

    noch mal vielen dank!

    gibt es irgendwo eine beschreibung der AppleScript-Befehle in digitaler form zum herunterladen? ich habe die applescript anleitung von apple - AppleScriptLanguageGuid.pdf. ist es alles, was man kostenfrei bekommen kann?

    gute nacht
    vik
     
Die Seite wird geladen...
Ähnliche Themen - bestimmte Strings herausfiltern Forum Datum
Bestimmte Nertwerkverbindung beim öffnen eines Programms Scripting und Automatisierung 19.02.2014
Script um bestimmte Dateien zu löschen Scripting und Automatisierung 06.07.2012
AppleScript soll nur bestimmte Zeichen/Wörter zählen Scripting und Automatisierung 11.03.2011
[suche] Wenn Ereignis XXX im iCal, dann Mail bestimmte Mail-Gruppe Scripting und Automatisierung 23.08.2010
Internetfreigabe wenn bestimmte "Umgebung" aktiviert wird Scripting und Automatisierung 29.01.2010

Diese Seite empfehlen

Benutzerdefinierte Suche