我正在寻找字面上有一个大于号(“>”),后跟一个空格,后跟一个反斜杠字符(“\”)的行,即包含以下行: > \
我认为转义可以允许这一点,并且对于大于它的情况也是如此:
$ ack-grep“\>”
返回包含“>”的行。
但是当我尝试逃避反斜杠时,我得到了:
$ ack-grep "\> \\"
ack-grep:无效的正则表达式‘\> \’:
正则表达式 m/> / 中的尾随 \
答案1
哇,我太接近了......单引号:
$ ack-grep '\> \\'
在确认我的正则表达式匹配有效后,我找到了答案: http://regexpal.com/ 并且恰巧尝试了其他东西后就得到了单引号。
答案2
这也有效:
$ ack-grep '> \\'
还有:
$ ack-grep "> \\\\"
大于号不需要转义。
答案3
要搜索文字字符串,请使用文字选项:
ack-grep --literal '> \'
答案4
请注意,这里的问题不是 ack,而是 shell 引用。如果您尝试将“> \”作为参数传入任何程序,都会遇到此问题。