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

问题描述 投票:0回答:1

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
shell grep double-quotes single-quotes
1个回答
1
投票

[\bashgrep的转义字符。

  • grep \$ a_file中,bash认为您正在转义$,但是它不需要转义,因此正在执行的正则表达式为$,该表达式查找具有结尾的任何行(毫不奇怪,他们都做)。

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.