【发布时间】:2013-08-21 04:04:42
【问题描述】:
我有一个文件
cat /tmp/b
A
Quick
Brown
Fox
Killed
2 Hens
如果我在 [0-9] 上匹配,那么我会得到预期的结果
cat /tmp/b | grep "[0-9]"
2 Hens
但如果我尝试匹配数字字符类,我会得到意想不到的结果
cat /tmp/b | grep "\d"
Killed
无论我尝试什么组合我认为可能有效的东西,这种情况都会继续
cat /tmp/b | grep "\\d"
Killed
cat /tmp/b | grep "\\d"
Killed
cat /tmp/b | grep "\\\\d"
{No matches}
cat /tmp/b | grep "\\\d"
{No matches}
cat /tmp/b | grep "[\\d]"
Killed
cat /tmp/b | grep "[d]"
Killed
cat /tmp/b | grep "[\\\\d]"
Killed
有谁知道我做错了什么以及如何让 Character Classed 在 cygwin sed 中工作
更新
cat /tmp/b | grep [:digit]
Quick
Killed
更新 2
cat /tmp/b | grep [[:digit:]]
2 Hens
【问题讨论】:
-
您是否检查过您的 Unix shell 路径中是否有多个 grep?也许您最终调用的那个不支持该语法。如果您在路径中的 Cygwin 目录之前有常规 Windows 目录,那么您的系统上是否安装了 Windows grep?尝试提供您想要的 grep 版本的完整路径。您可能还想仔细检查没有为“grep”定义的 shell 别名。哦,还有,尝试使用单引号。
-
which grep返回/usr/bin/grep
标签: regex sed cygwin character-class