# minimal example file
printf "hey\$you\nhey\$me\n" > test
cat test
# hey$you
# hey$me
簡単にgrep
言うと:
grep -F "hey$you" test
# hey$you
# hey$me
つまり、最初の行だけが一致する必要がある場合、両方の行が一致します。
脱出すると$
予想通りに動作します。
grep -F "hey\$you" test
# hey$you
しかし、これは私の理解に反する-F
/--fixed-strings
パターンを固定文字列のセットとして解釈します(つまり、
grep
アクションを強制的にfgrep
)。
man fgrep
特に何もありません$
。
macOSとUbuntuからコピー
答え1
これシェル$you
「弱い」(二重)参照を使用したため、(おそらく空の)変数に展開されます。
x
シェルのオプションを設定してこれを確認できます。
$ grep -F "hey$you" test
+ grep --color=auto -F hey test
# hey$you
# hey$me
ご覧のとおり"hey$you"
簡単になりますhey
。 2行を一致させます。
代わりに、パターンの周りに二重引用符(単一引用符)を使用してください。
$ grep -F 'hey$you' test
+ grep --color=auto -F 'hey$you' test
# hey$you