使用grep匹配同一行上出现两个令牌的位置

时间:2017-10-27 15:12:30

标签: linux command-line grep debian-based

我正在阅读该手册页,并找到了this博文,两者似乎都说了同样的话,但它不起作用。

我有一个项目,我需要批量替换像

这样的行
import Foo from '/modules/foo/client/components/Foo.jsx';

import Foo from '/modules/foo/client/imports/Foo.jsx';

但我不想匹配以下行:

import Base from '/client/components/Base.jsx';

即。 :仅从基础目录/modules“进口”。

我试过了

$ grep -R "modules.+components" modules/

但找不到匹配。

任何有关此的帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

默认情况下,grep将模式解释为基本正则表达式(BRE)(未扩展-E),并按字面意思处理某些正则表达式元字符。因此+在您当前的方法中没有特殊含义。

  

任何具有特殊含义的元字符都可以在它之前引用   用反斜杠。

grep -R "modules.\+components" modules/

https://www.gnu.org/software/grep/manual/grep.html#index-grep-programs

关于 BRE https://www.regular-expressions.info/posix.html#bre