File 使用AppleScript在文本文件中查找和替换

File 使用AppleScript在文本文件中查找和替换,file,text,replace,find,applescript,File,Text,Replace,Find,Applescript,我正在尝试编写一个applescript,它将通过启动代理运行。脚本需要做的是编辑用户首选项plist文件,以便默认保存位置特定于该用户。我知道这可以通过将“~/documents”设置为模板plist中的位置来实现。但是,例如Premier Pro也需要将临时文件写入本地驱动器。为了简单起见,我希望每个用户都能根据他们的用户名将这些信息放在一个位置。只有在首次登录时刚从模板创建本地配置文件时,才需要运行此脚本 我开始使用这个网站上的一些示例代码,并在下面做一个简单的测试。此测试应编辑一个txt

我正在尝试编写一个applescript,它将通过启动代理运行。脚本需要做的是编辑用户首选项plist文件,以便默认保存位置特定于该用户。我知道这可以通过将“~/documents”设置为模板plist中的位置来实现。但是,例如Premier Pro也需要将临时文件写入本地驱动器。为了简单起见,我希望每个用户都能根据他们的用户名将这些信息放在一个位置。只有在首次登录时刚从模板创建本地配置文件时,才需要运行此脚本

我开始使用这个网站上的一些示例代码,并在下面做一个简单的测试。此测试应编辑一个txt文件,并用另一个单词替换一个单词。此脚本当前不工作。测试时,它会在文本编辑中打开test.txt,但不会执行更多操作。也不会显示任何错误

先谢谢你

约翰

修改自,下面的处理程序执行您想要的操作。我做了一些更改并添加了变量。一些注意事项:(1)处理程序调用之前的“my”确保它被视为脚本的处理程序,而不是TextEdit应该在“内部”解释的东西(因为它在一个tell块中);(2) “考虑案例”使处理程序区分大小写,我想这是您想要的;(3)您可能会考虑像TexTWangRangle这样的东西,它具有健壮且功能丰富的Apple脚本支持,并在其AS字典中包括文本替换,如S笑,一个奇妙的脚本编辑器(它可以与文本一起工作,并很好地格式化PLIST文件)。
这里有一个不需要文本编辑的版本。它将以utf-8编码读取文件,更新其内容并将其作为utf-8编码文本存储回文件。我之所以在写入文件时使用try块,是因为如果另一个应用程序同时以读取权限打开该文件,则会出现错误。如果希望搜索和替换区分大小写,可以将考虑大小写块包装在内容的每个文本项的集合ti周围。当您替换字符串时,不需要激活它,只需要查找它

set stringToFind to "replace that"
set stringToReplace to "with this"
set theFile to choose file
set theContent to read theFile as «class utf8»
set {oldTID, AppleScript's text item delimiters} to {AppleScript's text item delimiters, stringToFind}
set ti to every text item of theContent
set AppleScript's text item delimiters to stringToReplace
set newContent to ti as string
set AppleScript's text item delimiters to oldTID
try
    set fd to open for access theFile with write permission
    set eof of fd to 0
    write newContent to fd as «class utf8»
    close access fd
on error
    close access theFile
end try

是的,正如@dj_bazzie_wazzie所指出的,你真的不需要一个文本编辑器,你可以使用终端做一些类似的事情:

perl -pi -e 's/old text/new text/g' /path/to/theFile.plist
当然,您可以在AppleScript中使用强大的
do shell脚本
命令:

do shell script "perl -pi -e 's/" & search_string & "/" & replacement_text & "/g' " & quoted form of (POSIX path of file_path)
--假设file_path是具有Mac样式(冒号分隔)文件路径的变量

perl -pi -e 's/old text/new text/g' /path/to/theFile.plist
do shell script "perl -pi -e 's/" & search_string & "/" & replacement_text & "/g' " & quoted form of (POSIX path of file_path)