2017-10-27 9 views
0

私はマニュアルページを読んでおり、thisというブログ記事を見つけましたが、どちらも同じことを言っているようです。grepを使用して、同じ行に2つのトークンが出現する箇所を一致させます。

私は

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

のような行を置き換えるバッチに必要なプロジェクトを持っていますが、私のような行を一致させる必要はありません:

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

すなわち:ベースディレクトリ/modulesからの「インポート」のみ。

私は

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

を試してみましたが、一致が見つかりませんでした。

これについてのお手伝いをいただければ幸いです。ありがとう!デフォルトで

+0

あなたは* *ラインを交換するのではなく、 'grep'のみ一致を検索する必要があると書きました。では、最終目標は何ですか? – RomanPerekhrest

+0

私はいつもgrepを使いますが、一度に1つのキーワードを常に検索しています。私は、検証ツールとして何も見逃さないようにしたいだけです。 –

答えて

1

grepは基本的な正規表現(BRE)(-E拡張しない)ように、パターンを解釈し、文字通り一部正規表現メタ文字を扱います。したがって、+はあなたの現在のアプローチでは特別な意味を持ちません。

特別な意味を持つ任意のメタキャラクタは、先に のバックスラッシュで引用することができます。

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

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


についてBREhttps://www.regular-expressions.info/posix.html#bre

+0

は '.'もメタ文字ではありませんか? –

+1

@ YanickRochon、良い考えとはい... *正規表現のメタキャラクタを文字通り扱う* BREで '.'も改行を含むすべての文字にマッチしますが、' + 'はエスケープして' \ + ' – RomanPerekhrest

関連する問題