grep'\ $'和grep“ \ $”有什么区别?

时间:2019-11-28 04:07:14

标签: shell grep double-quotes single-quotes

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

1 个答案:

答案 0 :(得分:1)

\bashgrep的转义字符。

  • grep \$ a_file中,bash认为您正在转义$,但是不需要转义,因此正在执行的正则表达式为$,看起来对于任何有结尾的行(毫无疑问,它们都行)。

  • grep "\$" a_file中,bash解释了双引号,这允许在内部使用各种卑鄙的东西。具体来说,它仍然允许bash转义,就像上面一样;再次执行的命令是$

  • grep '\$' a_file中,bash解释单引号,这基本上告诉bash将内容保持尽可能完整。值得注意的是,bash不会删除反斜杠。正则表达式将为\$,其中\从美元中删除了“行尾”的特殊含义,并且正在搜索文字中的美元字符。

有关更多详细信息,请参见man bash下的QUOTING