1. ホーム
  2. regex

[解決済み] name=`の直後を取得するためにgrepを使用するには?

2023-06-05 07:58:33

質問

の直後に何かgrepしようとして行き詰っています。 name= の後に、スペースと英数字のみを含むものをgrepしようとして行き詰っています。

name=some value here

私は

some value here

私は全くの初心者なのですが、以下のgrepで name= .

grep 'name=.*' filename

どんな助けでも大歓迎です。

どのように解決するのですか?

詳細 ここで のように、正のlookbehind節が必要です。

grep -P '(?<=name=)[ A-Za-z0-9]*' filename

P は grep に Perl の方言を使わせますが、そうでなければおそらく括弧をエスケープする必要があるでしょう。また、他の箇所で述べたように -o パラメータを追加して、マッチしたものだけを出力することもできます。括弧の中の部分は、英数字とスペースを指定します。

正のlookbehind句を使用する利点は、"name="テキストがマッチの一部でないことです。grep がマッチしたテキストをハイライトする場合、英数字 (およびスペース) の部分のみがハイライトされます。また、-oパラメータは、"name="の部分を表示しません。そして、テキストをキャプチャしてそれを使って何かを行うかもしれない sed のような別のプログラムにこれを移行する場合、キャプチャする括弧を使用することによってそれを行うこともできますが、"name=" 部分をキャプチャすることはありません。