Variable übergeben - find

Dieses Thema im Forum "Scripting und Automatisierung" wurde erstellt von SelKai, 04.09.2005.

  1. SelKai

    SelKai Thread Starter MacUser Mitglied

    Beiträge:
    81
    Zustimmungen:
    0
    MacUser seit:
    10.07.2005
    Hallo,

    wie sage ich denn einer find-Anweisung, dass nach einer Variablen gesucht werden soll? Ich dachte etwa so: find "& VariablenName" searching in ...
    doch so geht das nicht.

    Vielen Dank. Kai.
     
  2. Mitraix

    Mitraix Gast

    Auszug aus man find:

    EXAMPLES

    The following examples are shown as given to the shell:

    find / \! -name "*.c" -print
    Print out a list of all the files whose names do not end in .c.

    find / -newer ttt -user wnj -print
    Print out a list of all the files owned by user ``wnj'' that are
    newer than the file ttt.

    find / \! \( -newer ttt -user wnj \) -print
    Print out a list of all the files which are not both newer than
    ttt and owned by ``wnj''.

    find / \( -newer ttt -or -user wnj \) -print
    Print out a list of all the files that are either owned by
    ``wnj'' or that are newer than ttt.

    find . -newerct '1 minute ago' -print
    Print out a list of all the files whose inode change time is more
    recent than the current time minus one minute.
     
  3. SelKai

    SelKai Thread Starter MacUser Mitglied

    Beiträge:
    81
    Zustimmungen:
    0
    MacUser seit:
    10.07.2005
    Danke Spire, für die schnelle Antwort. Leider werde ich nicht so recht schlau daraus. Deshalb bin ich auch mit meinem Paste-Problem noch nicht weitergekommen. Ich hätte vielleicht erwähnen sollen, dass ich eine einfache Textdatei bearbeiten will. Ein Teil meines Skripts sieht bis jetzt so aus:

    Code:
    tell application "TextWrangler"
    	activate
    	set _Frage to display dialog "Text eingeben:" default answer "" default button "OK"
    	set _Antwort to text returned of _Frage
    	find "& _Antwort" searching in text of text document 1 options {search mode:literal, starting at top:false, wrap around:false, backwards:false, case sensitive:false, match words:false, extend selection:false} with selecting match
    end tell
    Wenn ich nach einem festen Ausdruck suchen lasse funktioniert es. Nur mit der Variable eben nicht. Ich bin wie immer über jede, Anfänger-taugliche Hilfe dankbar.

    Kai.
     
  4. Andi

    Andi MacUser Mitglied

    Beiträge:
    7.842
    Zustimmungen:
    653
    MacUser seit:
    16.05.2002
    ...

    Hallo SelKai,

    Was soll das &?

    find _Antwort ...

    _Antwort heißt die Variable in Deinem Beispiel.

    find "Präfix" & _Antwort & "Suffix" ...

    Wenn die _Antwort "Test" ist würde das Skript nach "PräfixTestSuffix" suchen

    Möchtest Du vielleicht ein Leerzeichen vorsetzen?

    Dann müsste es so gehen:

    find " " & _Antwort ...

    Gruß Andi
     
  5. SelKai

    SelKai Thread Starter MacUser Mitglied

    Beiträge:
    81
    Zustimmungen:
    0
    MacUser seit:
    10.07.2005
    Guten Morgen Andi,

    Das hatte ich auch schon probiert, aber offensichtlich was falsch gemacht, denn jetzt funktioniert es. Vielen Dank auch für die anderen Beispiele!

    Kai.
     
  6. SelKai

    SelKai Thread Starter MacUser Mitglied

    Beiträge:
    81
    Zustimmungen:
    0
    MacUser seit:
    10.07.2005
    Hallo nochmal,

    ich versuche nun eine Zeile von doc 1 einzulesen, um sie dann in doc 2 zu finden. Das habe ich so versucht:
    Code:
    tell application "TextWrangler"
    	activate
    	open datei 2
    	open datei 1
    	
    	set _ErsteZeile to line 1 of document 1
    		
    	find _ErsteZeile searching in text of document 2 options {search mode:literal, starting at top:false, wrap around:true, backwards:false, case sensitive:false, match words:true, extend selection:false} with selecting match
    	
    end tell
    
    Leider wird in doc2 irgendwas, nur nicht _ErsteZeile gefunden. Dabei scheint das so einfach zu sein ...

    Danke schonmal im voraus. Kai.
     
  7. Andi

    Andi MacUser Mitglied

    Beiträge:
    7.842
    Zustimmungen:
    653
    MacUser seit:
    16.05.2002
    ...

    Hallo SelKai,

    find erwartet einen String.
    Versuche mal

    set _ErsteZeile to line 1 of document 1 as string

    falls die erste Zeile als Liste interpretiert wird, da sie ja aus mehreren Wörtern besteht.

    Ist document mit id 1 auch das richtige?

    Im Skripteditor gibts das Event-Protokoll. Da sieht man schon, was wie in die Variablen geschrieben wird...

    Gruß Andi
     
  8. SelKai

    SelKai Thread Starter MacUser Mitglied

    Beiträge:
    81
    Zustimmungen:
    0
    MacUser seit:
    10.07.2005
    Hi Andi

    der Tipp mit dem Event-Protokoll war gut. Es hatte sich ein Leerzeichen eingeschlichen, weshalb die Suche nicht erfolgreich sein konnte - dummer Fehler. Nun geht es auch ohne "as string".

    Danke. Kai.
     
Die Seite wird geladen...

Diese Seite empfehlen