perl - ack-grep : chars escaping

标签 perl unix grep ack

我的目标是通过 ack 查找所有出现的“<?= ”。我怎样才能做到这一点?

ack "<?="

不起作用。请告诉我如何解决这里的转义问题?

最佳答案

ack使用 Perl 正则表达式,您的问题源于这样一个事实:在 Perl RegEx 语言中,?是一个特殊字符,表示“最后一个匹配是可选的”。所以你正在寻找的是 =前面是可选的 <

所以你需要转义 ?如果这只是一个普通角色的话。

要逃脱,有两种方法 - 要么 <\?=<[?]= ;有些人发现第二种形式的转义(将特殊字符放入字符类中)比反斜杠转义更具可读性。

更新 正如 Josh Kelley 在评论中慷慨地添加的那样,第三种转义形式是使用 \Q转义所有以下特殊字符的运算符,直到 \E遇到,如下:\Q<?=\E

关于perl - ack-grep : chars escaping,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3074122/

相关文章:

grep - 如何使 ack 包含 .conf 文件?

python - 使用 Perl 或 Python 将日志文件内容导入 MySQL 数据库

Perl grep 相似的单词

regex - "you can’ t 在 "Programming Perl"中隐藏正则表达式构造中模式的终止分隔符是什么意思?

linux - 按列排序 Unix

unix - 如何使用 awk 根据两个单独的字段数据过滤文件?

regex - 排除子目录

perl - Catalyst:如何声明一个全局子程序

unix - 在 go 中获取未安装卷的 BLKID

java - 在java中调用grep时,它不适用于法语字符