grepを使用して "$"文字を含む文字列を一致させるにはどうすればよいですか?

grepを使用して

$文字を含む文字列を一致させるには?

はい - 以下はgrep一致するものを返しません。

  param="ambari_parameter$"
  echo "ambari_parameter$" | grep $param
  echo "ambari_parameter$" | grep "$param"

ベストアンサー1

この場合、文字列は$param正規表現として解釈されます。式には、パターンを一致の終わりに固定する$ことが含まれています。入力データが最後(文字列の終わり)に含まれていないため、一致しませんambari_parameterambari_parameter$ambari_parameter$

パターン$(二重引用符で囲まれた文字列)でasをエスケープしたり、角かっこグループに入れることができますが、正規表現の一致ではなく文字列の一致を実行したいと思うので、次のように使用する方が適切です。 :\$\\$$[$]-F

echo 'ambari_parameter$' | grep -F -e "$param"

使用すると、与えられたパターンは正規表現ではなく文字列として扱われますgrep -Fgrepしたがって、パターン内のすべての文字は文字通り一致し、$最後の文字も一致します。

-eまた、ここではgrep以下のパラメータを強制的にパターンとして認識するために使用しました。ダッシュ()で始まる場合は$param必須です--eこれは通常、一致するパターンが変数に提供されるたびに使用できます。

追加リクエストみんな入力行の文字列全体を一致させるには、以下を追加します-x

echo 'ambari_parameter$' | grep -xF -e "$param"

の場合、文字列または($paramしかしambari_parameter$_ambari_parameter$ambari_parameter$100〜する-x省略すると一致します。)

おすすめ記事