$
文字を含む文字列を一致させるには?
はい - 以下はgrep
一致するものを返しません。
param="ambari_parameter$"
echo "ambari_parameter$" | grep $param
echo "ambari_parameter$" | grep "$param"
ベストアンサー1
この場合、文字列は$param
正規表現として解釈されます。式には、パターンを一致の終わりに固定する$
ことが含まれています。入力データが最後(文字列の終わり)に含まれていないため、一致しませんambari_parameter
。ambari_parameter$
ambari_parameter
$
パターン$
(二重引用符で囲まれた文字列)でasをエスケープしたり、角かっこグループに入れることができますが、正規表現の一致ではなく文字列の一致を実行したいと思うので、次のように使用する方が適切です。 :\$
\\$
$
[$]
-F
echo 'ambari_parameter$' | grep -F -e "$param"
使用すると、与えられたパターンは正規表現ではなく文字列として扱われますgrep -F
。grep
したがって、パターン内のすべての文字は文字通り一致し、$
最後の文字も一致します。
-e
また、ここではgrep
以下のパラメータを強制的にパターンとして認識するために使用しました。ダッシュ()で始まる場合は$param
必須です-
。-e
これは通常、一致するパターンが変数に提供されるたびに使用できます。
追加リクエストみんな入力行の文字列全体を一致させるには、以下を追加します-x
。
echo 'ambari_parameter$' | grep -xF -e "$param"
の場合、文字列または($param
しかしambari_parameter$
_ambari_parameter$
ambari_parameter$100
〜する-x
省略すると一致します。)