Answers:
所述外壳被解释\$
并使其通过以作为grep的$
,行字符的结束。因此,假设您的行有结尾,它将匹配:-)
如果要匹配$
grep 中的实际值,请使用以下方法之一:
grep \\\$
grep '\$'
在前者中,shell解释\\
为\
和\$
作为$
,给人\$
。在后者中,它根本不解释它。
关于您的问题,为什么要\$
匹配美元符号而不是两个字符的序列,正则表达式(例如grep
用于某些目的的特殊字符)使用了。其中一些是:
$ end of line
^ start of line
. any character
+ 1 or more of the preceeding pattern
* 0 or more of the preceeding pattern
{n,m} between n and m of the preceeding pattern
[x-y] any character between x and y (such as [0-9] for a digit).
与许多其他人一起。
当您想要匹配通常被视为特殊字符的文字字符时,您需要对其进行转义以grep
将其视为普通字符。
ls \$
并看到我们得到“ ls:$:没有这样的文件或目录”,看到\ $不转义为$,而\\ $不转义为\ $,依此类推。
它被解释为行尾元字符。如果要匹配实际的美元符号,请执行
$ grep \\$
要么
$ grep '\$'
echo \$
然后尝试echo \\$