Nli*_*tis 8 regex bash shell grep
我有一个文本文件,其中包含一个日期dd/mm/yyyy(例如20/12/2012).
我试图用来grep解析日期并在终端中显示它,并且它是成功的,直到我遇到某个案例:
这些是我的测试用例:
grep -E "\d*" 返回20/12/2012grep -E "\d*/" 返回20/12/2012grep -E "\d*/\d*" 返回20/12/2012grep -E "\d*/\d*/"没有回报grep -E "\d+"也没有回报有人可以向我解释为什么我会出现这种意外行为吗?
编辑:如果我用"(弱引号)替换(强引号),我会得到相同的行为'.
Sha*_*hin 12
Bash的Extended regex\d无法识别您使用的语法().
使用grep -PPerl正则表达式(PCRE)代替.例如:
grep -P "\d+/\d+/\d+" input.txt
grep -P "\d{2}/\d{2}/\d{4}" input.txt # more restrictive
Run Code Online (Sandbox Code Playgroud)
或者,为了坚持使用扩展正则表达式,请使用[0-9]以下代码\d:
grep -E "[0-9]+/[0-9]+/[0-9]" input.txt
grep -E "[0-9]{2}/[0-9]{2}/[0-9]{4}" input.txt # more restrictive
Run Code Online (Sandbox Code Playgroud)