使用 grep 匹配同一行上出现两个标记的位置
Using grep to match where two tokens occur on the same line
我正在阅读手册页,并找到 this 博客 post,两者似乎说的是同一件事,但它不起作用。
我有一个项目需要批量替换像
这样的行
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';
即: 只有 "imports" 来自基础目录 /modules
.
我试过了
$ grep -R "modules.+components" modules/
但未找到匹配项。
如有任何帮助,我们将不胜感激。谢谢!
默认情况下,grep
将模式解释为基本正则表达式 (BRE)(未扩展 -E
)并按字面意思处理 一些 正则表达式元字符。因此 +
在您当前的方法中没有特殊含义。
Any meta-character with special meaning may be quoted by preceding it
with a backslash.
grep -R "modules.\+components" modules/
https://www.gnu.org/software/grep/manual/grep.html#index-grep-programs
我正在阅读手册页,并找到 this 博客 post,两者似乎说的是同一件事,但它不起作用。
我有一个项目需要批量替换像
这样的行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';
即: 只有 "imports" 来自基础目录 /modules
.
我试过了
$ grep -R "modules.+components" modules/
但未找到匹配项。
如有任何帮助,我们将不胜感激。谢谢!
默认情况下,grep
将模式解释为基本正则表达式 (BRE)(未扩展 -E
)并按字面意思处理 一些 正则表达式元字符。因此 +
在您当前的方法中没有特殊含义。
Any meta-character with special meaning may be quoted by preceding it with a backslash.
grep -R "modules.\+components" modules/
https://www.gnu.org/software/grep/manual/grep.html#index-grep-programs