【问题标题】:Why doesn't grep match a forward-slash at word boundaries (e.g. `/baz` in `import baz from './foo/bar/baz';`)?为什么 grep 不匹配单词边界处的正斜杠(例如 `import baz from './foo/bar/baz';` 中的 `/baz`)?
【发布时间】:2017-12-10 20:58:47
【问题描述】:

在我的项目中,我正在尝试匹配包含“/baz”的文件。所以,我做了以下事情:

grep -rnw . -e "\/baz"

输出正确匹配以下实例:

import { baz } from './baz';

但在这一行似乎不匹配:

import { baz } from './foo/bar/baz';

但是,如果我在 "bar\/baz" 上进行 grep,它确实匹配。怎么回事?

【问题讨论】:

    标签: regex grep


    【解决方案1】:

    从您的 grep 调用中删除 -w 参数。来自grep帮助:

    -w, --word-regexp 强制 PATTERN 只匹配整个单词

    因此,只有当它是一个完整的单词时,它才会匹配您的模式(被单词边界包围,例如点、空格、行首/行尾......)

    【讨论】:

    • 太棒了!谢谢,兄弟。我会将您的答案标记为答案,因为它包含手册页。
    【解决方案2】:

    你需要

    grep -rn . -e "\/baz"
    

    没有word 标志。否则,表达式会查找在第二个示例中找不到的单词边界。

    【讨论】:

    • 太棒了!谢谢朋友。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    • 2016-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多