0 votes

Applescript pour trouver un mot dans un fichier texte

Mac, Comment utilises-tu Applescript pour trouver un mot dans un fichier texte et s'il y a ce mot alors il fera quelque chose, mais s'il n'y est pas alors il fera autre chose?

1voto

Rakib Fiha Points 389

Dans Unix, il est très facile de trouver des mots dans des fichiers en utilisant des outils comme grep, awk, sed, etc.

Ici, je suppose que nous pouvons créer un petit script shell pour trouver le mot que vous voulez dans un fichier texte en utilisant grep et ensuite nous pouvons l'appeler directement depuis votre AppleScript comme indiqué ci-dessous:

Solution 1 Placer le mot de recherche et le chemin du fichier à l'intérieur d'un script shell.

Appelons le script shell: find.sh:

#!/usr/bin/env bash

grep -w  "chemin-du-fichier-texte"

Supposons que nous voulons rechercher le mot foo dans un fichier appelé bar

Notre script shell ressemblera à ceci:

#!/usr/bin/env bash
grep -w "foo" "bar"

Note: grep -w recherchera une correspondance exacte. Pour plus d'informations, consultez man grep

Sauvegardez le script find.sh dans votre répertoire de travail.

Vous pouvez le tester en exécutant:

bash find.sh

Maintenant, vous pouvez appeler find.sh depuis votre AppleScript de cette manière:

try
  do shell script "bash /chemin-vers/find.sh"
on error
  display dialog "aucun mot trouvé"
end try

Il est nécessaire de vérifier vous-même la validation en vous assurant de passer le nom de fichier et le chemin corrects (bar dans notre cas) dans votre script.

Solution 2 Placer le mot de recherche et le chemin du fichier à l'intérieur de votre AppleScript.

Si nous pouvons garantir la validation de chemin d'accès correct, le script shell peut être simplifié davantage, surtout si vous voulez mettre votre mot de recherche et le chemin d'accès dans votre AppleScript.

Après simplification, find.sh ressemblera à ceci:

#!/usr/bin/env bash
grep "$@"

Sauvegardez le script find.sh dans votre répertoire de travail.

Vous pouvez le tester en exécutant:

bash find.sh "foo" "bar"

Et votre AppleScript ressemblera à quelque chose comme ceci:

try
  do shell script "bash /chemin-vers/find.sh -w 'foo' 'bar'"
on error
  display dialog "aucun mot trouvé"
end try

1voto

jimtut Points 903

Utiliser un système grep est presque toujours le moyen le plus rapide d'aller, mais si vous voulez une façon purement AppleScript de le gérer, ce n'est pas difficile :

sur grep(myString, myFile)
    set fileHandle to open for access file myFile
    set theWords to words of (read fileHandle)
    close access fileHandle

    set matchCount to 0
    répéter avec monMot dans les theWords
        if text of myWord is myString then set matchCount to matchCount + 1
    fin répéter

    si (matchCount) > 0 alors
        return true
    else
        return false
    fin si
fin grep

sur run {}
    si grep("Dépassement", "Utilisateurs:jim:log.txt") then
        afficher dialogue "Trouvé!"
    fin si
fin run

Vous pourriez être beaucoup plus efficace à ce sujet aussi, y compris en sortant de la boucle répéter après avoir trouvé le premier match. Mais, c'est très lisible et vous pouvez construire dessus pour faire ce que vous voulez.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X