(其他引用/ 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']
由于匹配c
但b
不匹配,显然grep不会将转义单引号\'
解释为单引号。但那么呢?
d
未匹配,因此不会被忽略。e
不匹配,因此不按字面意思TIA解决这个x-mas之谜! PS。是的,在这种情况下,我可以使用-F进行文字匹配,但我的应用程序需要正则表达式。
答案 0 :(得分:2)
\'
表示"字符串结束"。见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.
不要问我为什么介绍它,因为它似乎与$
完全一样。