一些参数不能从AppleScript到grep通过shell脚本工作

时间:2017-10-08 01:15:06

标签: bash macos applescript

在AppleScript编辑器中

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

忽略-w

在Bash中

grep -w 'SomeText' /tmp/test

不会忽略参数

但是例如参数-v(否定)在AppleScript中使用do shell脚本

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

如何在gregs from Applecript中使用-w参数?

谢谢!

1 个答案:

答案 0 :(得分:0)

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

-wgrep 选项的手册页说明如下:

  

-w, - word-regexp
  搜索表达式为一个单词(好像被'[[:&lt ;:]]'和'[[:>:]]'包围;参见
re_format(7))。

re_format州的手册页:

  

括号表达式有两种特殊情况:括号表达式[[:&lt ;:]]和[[:>:]]分别匹配单词开头和结尾的空字符串。一个单词被定义为一个单词字符序列,它既不是单词字符,也不是单词字符。单词字符是 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'
    • 的三行中的两行


当包含在 AppleScript中的grep 命令中时,每个do shell script 命令输出显示在上面应该是相同的。

在脚本编辑器中:

Insert Image Here

因为这些是预期的结果,所以当我以你的方式提出问题时,我坚持要关注How to create a Minimal, Complete,and Verifiable example

我建议您向我们展示/tmp/test 文件的实际内容以及每个输出的实际内容 终端 AppleScript的<{1>} 命令,包含和不包含grep 选项 / strong> -w 命令

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