为什么我不能匹配字符串
"1234567-1234567890"
使用给定的正则表达式
\d{7}-\d{10}
从egrep
这样的外壳:
egrep \d{7}-\d{10} file
?
为什么我不能匹配字符串
"1234567-1234567890"
使用给定的正则表达式
\d{7}-\d{10}
从egrep
这样的外壳:
egrep \d{7}-\d{10} file
?
egrep
不识别\d
数字字符类的简写,因此您需要使用 eg [0-9]
。
此外,虽然在这种情况下不是绝对必要的,但引用正则表达式以防止 shell 误解是一个好习惯。因此,这样的事情应该有效:
egrep '[0-9]{7}-[0-9]{10}' file
grep
, ed
, sed
, egrep
, awk
,emacs
grep
列出与egrep
其他正则表达式风格之间的差异为了完整性:
Egrep 实际上确实支持字符类。这些课程是:
示例(注意双括号):
egrep '[[:digit:]]{7}-[[:digit:]]{10}' file
\d
如果您通过 grep “perl 正则表达式”选项,您可以使用,例如:
grep -P "\d{9}"
使用 [0-9] 代替 \d。egrep 不知道\d。
试试这个:
egrep '(\d{7}-\d{10})' file