【问题标题】:What's the differences between grep '\$' and grep "\$"?grep '\$' 和 grep "\$" 有什么区别?
【发布时间】:2020-03-23 16:24:50
【问题描述】:

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】:

\bashgrep 的转义字符。

  • grep \$ a_filebash 认为你正在转义$,但它不需要转义,所以正在执行的正则表达式是$,它会查找任何有结尾的行(不出所料,他们都这样做)。

  • grep "\$" a_file 中,bash 解释双引号,这允许在里面进行各种害羞的事情。具体来说,它仍然允许bash 转义,就像上面一样;正在执行的命令又是$

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

更多详情请参阅QUOTING 下的man bash

【讨论】:

  • $ 是行尾,^ 是开始。
  • @BenjaminW。是的,就是位置参数的特殊含义。它们也可以用于它们的字面值。这个。
  • @Amadan 感谢您的回复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-12
  • 1970-01-01
  • 2015-03-30
  • 1970-01-01
  • 2011-12-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多