2017-10-08 41 views
-2

中的AppleScript编辑:一些参数不是从AppleScript的工作到grep直通做shell脚本

do shell script "grep -w 'SomeText' /tmp/test" 

忽略-w

在击:

grep -w 'SomeText' /tmp/test 

不忽略参数

但例如参数-v(负值)在AppleScript中使用shell脚本

它发生在具有不同系统的不同计算机上

如何在applescript的grep中使用-w参数?

谢谢!

+1

在我的系统的终端上运行'grep -w'SomeText'/ tmp/test'只返回'grep:/tmp/test:没有这样的文件或目录',因此提供了一个无法使用的示例。看看[如何创建一个最小,完整和可验证的示例](https://stackoverflow.com/help/mcve),然后编辑你的问题以符合它。 – user3439894

+1

@ user3439894我不认为要求你自己创建'/ tmp/test'就太难了。 – chepner

+0

@chepner,IMO如果有人说某件事情是有效的,但没有提供实际的工作细节,那么他们需要提供一个MCVE。这就是它的原因! – user3439894

回答

0

无论在哪里我运行grep -w ...命令从,终端ApplesScript的do shell script命令,我得到相同输出

的手册页的-w选项grep状态下:

-w,--word,正则表达式
                       的表达式被搜索为一个单词(仿佛被' [[:<:]]'和'[[:>:]]';见
                       请参阅re_format(7))。

re_format状态的手册页:

有括号表达式的两种特殊情况‡:托架表达式[[:<:]]和[[:>:]]匹配空字符串分别在一个词的开头和结尾。单词被定义为单词字符的前后两个单词字符的序列。单词字符是alnum字符(由ctype(3)定义)或下划线。


在终端:的/tmp/test

  • 内容:

    $ cat /tmp/test 
    SomeText 
    MoreText 
    ASomeTextZ 
    Other Text 
    0 SomeText 1 
    $ 
    


  • 使用grep没有-w/tmp/test

    $ grep 'SomeText' /tmp/test 
    SomeText 
    ASomeTextZ 
    0 SomeText 1 
    $ 
    
    • 理所应当,grep查找包含'SomeText'所有三行。

  • 使用grep-w/tmp/test

    $ grep -w 'SomeText' /tmp/test 
    SomeText 
    0 SomeText 1 
    $ 
    
    • 理所应当,grep -w只找到符合什么上面显示的手册页摘录的既定线路。在这种情况下,三条线中只有两条包含'SomeText'


输出每个grep命令,显示如上所述,在AppleScript的包裹在do shell script命令是相同的,如应。

在脚本编辑器:

Insert Image Here


因为这些都是预期的结果。这就是为什么我很坚定的关于以下How to create a Minimal, Complete,and Verifiable example,问什么时候的问题,例如,你有,以这样的方式你有!

我建议你告诉我们,你的/tmp/test文件和实际输出的实际内容你从每个grep命令的获取,使用和不使用-w选项,从两个终端AppleScript的do shell script命令

尽管它不应该有所作为,但是您还应该提供macOS版本信息,以便我们可以在您正在使用的macOS的实际版本下对其进行测试,以查看这是否是该方程中的相关因素。