逃避谜题:为什么grep忽略单引号的逃避?

时间:2016-12-25 23:52:48

标签: grep escaping

其他引用/ grep问题是关于bash解释,这不是

显然grep处理转义的单引号与其他转义的正则表达式字符不同,但我不明白为什么。

$ grep --version
grep (GNU grep) 2.25

$ cat data
a']
b']
c']
d]
e\']

$ cat patterns
a']
b\'\]
c'\]
d\']
e\']

$ grep -Ef patterns data
a']
c']

由于匹配cb不匹配,显然grep不会将转义单引号\'解释为单引号。但那么呢?

  • d未匹配,因此不会被忽略。
  • e不匹配,因此不按字面意思

TIA解决这个x-mas之谜! PS。是的,在这种情况下,我可以使用-F进行文字匹配,但我的应用程序需要正则表达式。

1 个答案:

答案 0 :(得分:2)

GNU工具中的

\'表示"字符串结束"。见http://www.regular-expressions.info/gnu.html

Additional GNU Extensions
....
The anchor \` (backtick) matches at the very start of the subject string,
while \' (single quote) matches at the very end.

不要问我为什么介绍它,因为它似乎与$完全一样。