grep '\$' 和 grep "\$" 有什么区别?
What's the differences between grep '\$' and grep "\$"?
grep '\$' 和 grep "\$" 有什么区别?
有人可以对以下命令给出正确的解释。
/usr/download/test/myshell$ cat a_file
boot
book
booze
machine
boots
bungie
bark
aardvark
broken$tuff
robots
输出:grep '\$' a_file
/usr/download/test/myshell$ grep '$' a_file
broken$tuff
输出:grep "\$" a_file
/usr/download/test/myshell$ grep "$" a_file
boot
book
booze
machine
boots
bungie
bark
aardvark
broken$tuff
robots
输出:grep \$ a_file
/usr/download/test/myshell$ grep $ a_file
boot
book
booze
machine
boots
bungie
bark
aardvark
broken$tuff
robots
\
是 bash
和 grep
的转义字符。
在grep $ a_file
中,bash
认为你在转义$
,其实不需要转义,所以执行的regexp是$
,它会查找任何有结尾的行(不出所料,所有行都有结尾)。
在 grep "$" a_file
中,bash
解释双引号,它允许在内部进行各种繁琐的事情。具体来说,它仍然允许 bash
转义,就像上面一样;正在执行的命令又是 $
.
在grep '$' a_file
中,bash
解释单引号,基本上告诉bash
尽可能保持里面的东西完好无损。值得注意的是,bash
不会删除反斜杠。正则表达式将为 $
,其中 \
从美元中删除 "end of line" 的特殊含义,并搜索文字美元字符。
有关详细信息,请参阅 QUOTING
下的 man bash
。
grep '\$' 和 grep "\$" 有什么区别?
有人可以对以下命令给出正确的解释。
/usr/download/test/myshell$ cat a_file
boot
book
booze
machine
boots
bungie
bark
aardvark
broken$tuff
robots
输出:grep '\$' a_file
/usr/download/test/myshell$ grep '$' a_file
broken$tuff
输出:grep "\$" a_file
/usr/download/test/myshell$ grep "$" a_file
boot
book
booze
machine
boots
bungie
bark
aardvark
broken$tuff
robots
输出:grep \$ a_file
/usr/download/test/myshell$ grep $ a_file
boot
book
booze
machine
boots
bungie
bark
aardvark
broken$tuff
robots
\
是 bash
和 grep
的转义字符。
在
grep $ a_file
中,bash
认为你在转义$
,其实不需要转义,所以执行的regexp是$
,它会查找任何有结尾的行(不出所料,所有行都有结尾)。在
grep "$" a_file
中,bash
解释双引号,它允许在内部进行各种繁琐的事情。具体来说,它仍然允许bash
转义,就像上面一样;正在执行的命令又是$
.在
grep '$' a_file
中,bash
解释单引号,基本上告诉bash
尽可能保持里面的东西完好无损。值得注意的是,bash
不会删除反斜杠。正则表达式将为$
,其中\
从美元中删除 "end of line" 的特殊含义,并搜索文字美元字符。
有关详细信息,请参阅 QUOTING
下的 man bash
。