![grep 命令返回 0 - 匹配全局所有非数字字符](https://linux22.com/image/1475661/grep%20%E5%91%BD%E4%BB%A4%E8%BF%94%E5%9B%9E%200%20-%20%E5%8C%B9%E9%85%8D%E5%85%A8%E5%B1%80%E6%89%80%E6%9C%89%E9%9D%9E%E6%95%B0%E5%AD%97%E5%AD%97%E7%AC%A6.png)
我正在寻找在文件中搜索所有不包含数字的字符串,我提出了以下正则表达式。
\D*/g
这个在线工具可以按照我的需要工作:https://regex101.com/#pcre,但是当我运行以下命令时:
grep -c "\D*/g" nonDistortResults.txt
它正在返回0
。
该文件的格式如下:
2573
kitchenDoor 2573
2573
2573
2573
2574
2574
2574
2574
kitchenDoor 2574
2574
2574
2575
2575
2575
2575
2575
kitchenDoor 2575
2576
因此在上面的例子中我希望它返回3
。
答案1
您需要按如下方式调整您的模式:
grep -c \D nonDistortResults.txt
- 我们不需要“贪婪”标志,因为 grep 已经可以处理行
- 这里不需要引号
- 星号可以是任意数量的结果,包括 0(因此使用它将为每一行返回 true)
如果您需要再次使用一些 Pearl 正则表达式(PCRE),您可以查看 grep 的 -P 选项,但手册页说:
-P, --perl-regexp
将 PATTERN 解释为 Perl 正则表达式 (PCRE,见下文)。这是高度实验性的,grep -P 可能会警告未实现的功能。