【问题标题】:grep -v under double quotes querygrep -v 下双引号查询
【发布时间】:2014-12-02 08:55:44
【问题描述】:

我们有一段代码说明,

"diff file1 file2 | /usr/bin/grep -v "#" |  /usr/bin/grep ^\>  |  /usr/bin/awk '{print $3}' | /usr/bin/xargs mkdir"

整个语句用双引号括起来(是应用程序语法的要求)。当应用程序到达这个阶段时,它会给出 grep 错误。 该语句在命令行上运行良好。但是通过应用,grep 报错。

用法:grep [OPTION]... PATTERN [FILE]...

尝试使用 `grep --help' 获取更多信息。

所以不确定是第一个 grep 还是第二个 grep 有问题。

【问题讨论】:

    标签: grep double-quotes quoting


    【解决方案1】:

    似乎是双引号的问题。尝试将您的第一个 grep 更改为 /usr/bin/grep -v '#',将第二个 grep 更改为 /usr/bin/grep '^>'

    【讨论】:

      【解决方案2】:

      您正在使用grep -v ^>> 表示“重定向”。

      例如,如果你这样做:

      grep ^>output
      

      所有输出都将存储在文件output中。

      所以你需要做的是引用^>,以便它被解释为你正在寻找的模式:

      "diff file1 file2 | /usr/bin/grep -v "#" | /usr/bin/grep "^>" | /usr/bin/awk '{print $3}' | /usr/bin/xargs mkdir"
                                                               ^  ^
      

      顺便说一句,请注意您的所有greps 都可以像这样减少:

      diff file1 file2 | awk '/#/ || /^>/ {print $3}' | /usr/bin/xargs mkdir
                              ^^^ ^^ ^^^^
                either contains #  |   |
                                   or starts with >
      

      【讨论】:

      • 在这种情况下,从双引号改为单引号没有任何意义,但是...
      猜你喜欢
      • 2014-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-13
      • 1970-01-01
      相关资源
      最近更新 更多