【问题标题】:How to grep for non-whitespaces adjacent to slashes如何grep与斜杠相邻的非空格
【发布时间】:2016-02-20 17:08:14
【问题描述】:

我想为 cmets grep 后面没有空格...

下面的 grep 表达式不起作用来提取 //abc 模式,但我不知道为什么...

echo "//asdf" | grep '//^[ ]*' 应该返回 //asdf,而

echo "// asdf" | grep '//^[ ]*' 应该什么都不返回。

总而言之,上面的 grep 语句不知何故被破坏了,但上面的表达式似乎是在说“与非空白相邻的两个斜杠”。

  • 什么是正确的 grep 方法来获取“与空格相邻的两个斜杠”?
  • 具体来说,我应该如何修改'//^[ ]*'以匹配以下表达式://a//asdfasdf//1234//another one 1234

【问题讨论】:

    标签: regex grep whitespace slash


    【解决方案1】:

    这是因为否定 ^ 必须放在 内部 [ ] 块:

    $ echo "//asdf" | grep '//[^]' //asdf $ echo "// asdf" | grep '//[^]'

    也就是说,使用[^ ] 而不是^[ ]。这样,saying [^ ] 匹配列表中不存在的单个字符。

    when you were saying ^\[ \] 你说的是:

    • ^ 断言字符串开头的位置
    • [ ] 匹配下面列表中的单个字符

    【讨论】:

      【解决方案2】:

      两个斜线后跟一个空格

      grep '//[ ]'
      

      两个斜线后跟一个非空格字符

      grep '//[^ ]'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-07
        • 2017-10-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-19
        • 2012-06-29
        相关资源
        最近更新 更多