AppleScript和.txt文件

时间:2014-04-03 05:17:45

标签: text applescript

我需要一个AppleScript来编辑给定文本文件的内容(通用结构)并删除第5个字符到第8个字符,保留字符9-20,并删除字符21-32。例如:

说这是我的文本文件:

" Qt的&放大器;:$ YP $ shshshahahah $ jsjsjajssjh "

(单行)

我需要从第一个$开始删除到下一个$,然后删除(包括)最后一个$之后的所有内容。在这个例子中,最终结果是:

Qt的&安培;:shshshahahah

谢谢, Isaac D' Keefe

2 个答案:

答案 0 :(得分:0)

您可以在终端中运行这样的命令:

sed -Ei '' 's/(.{4}).{4}(.{12}).*/\1\2/' ~/Documents/file

或者如果您需要使用AppleScript:

set p to "/Users/username/Documents/file"
set input to read p as «class utf8»
set input to text 1 thru 4 of input & text 9 thru 20 of input
set fd to open for access p with write permission
set eof fd to 0
write input to fd as «class utf8»
close access fd

答案 1 :(得分:0)

  

我需要从第一个$开始删除到下一个$,并且   然后删除(包括)最后一个$之后的所有内容。在这个例子中,   最终的结果是:

根据这些条件,您可以使用分隔符/分隔符将字符串拆分为块。然后根据我的理解,你只想保留奇数项并删除偶数项(按索引)。因此,以下脚本将按照您的描述工作,而不是处理字符的索引。

set theString to " Qt&:$yp$shshshahahah$jsjsjajssjh "

set {oldTID, AppleScript's text item delimiters} to {AppleScript's text item delimiters, "$"}
set textItems to every text item of theString
set AppleScript's text item delimiters to oldTID

set filteredTextItems to {}
repeat with x from 1 to count textItems by 2
    set end of filteredTextItems to item x of textItems
end repeat

return filteredTextItems as string