Applescript-对于grep找到的每个项目

时间:2011-06-30 11:53:32

标签: applescript applescript-objc

这段代码显然无效,但我正在寻找语法更改以使其正常工作。

for every item that grep finds
    set myCommand to do shell script "grep -w word test.log"
    set mySecondCommand to do shell script "grep -w end test.log"
end

以下输出应该是正确的(我想要的):

word
end
word
end

相反,我得到因为我没有这个理论“对于grep发现的每个项目”声明(我不想要这个输出):

word
word
end
end

1 个答案:

答案 0 :(得分:1)

您的初始grep结果将采用字符串格式,例如。一根长串。为了迭代它们,您需要将字符串转换为列表,因此我使用“paragraph”命令。一旦以列表格式获得初始grep结果,就可以使用重复循环来处理列表中的项目。处理项目时,您需要将这些结果存储在新列表中,以便在脚本结束时可以查看总计结果。像这样......

set firstWord to "word"
set secondWord to "end"

-- use the ls command and grep to find all the txt documents in your documents folder
set aFolder to (path to documents folder) as text
set grepResults to do shell script "ls " & quoted form of POSIX path of aFolder & " | grep \"txt\""
set grepResultsList to paragraphs of grepResults

-- search the found txt documents for the words
set totalResults to {}
repeat with aResult in grepResultsList
    set thisPath to aFolder & aResult
    try
        set myCommand to paragraphs of (do shell script "grep -w " & firstWord & space & quoted form of POSIX path of thisPath)
        set myCommandCount to count of myCommand
        set end of totalResults to {thisPath, firstWord, myCommandCount, myCommand}
    end try

    try
        set mySecondCommand to paragraphs of (do shell script "grep -w " & secondWord & space & quoted form of POSIX path of thisPath)
        set mySecondCommandCount to count of mySecondCommand
        set end of totalResults to {thisPath, secondWord, mySecondCommandCount, mySecondCommand}
    end try
end repeat
return totalResults