首页 > 解决方案 > 为什么 sed 不尊重简单的正则表达式?

问题描述

为什么 sed 不尊重我的正则表达式?我检查了一下,我的正则表达式应该正确地选择了预期的结果。

标签: sed

解决方案


正如赛勒斯在评论链接中指出的那样,\d确实会出现问题,请使用[0-9]

echo "mmhmmh here_is_you 05451ab8 888" | sed -n 's/mmhmmh [a-zA-Z0-9_]* \([ab0-9]*\) [0-9]*/\1/p'
05451ab8

或者[[:digit:]]

echo "mmhmmh here_is_you 05451ab8 888" | sed -n 's/mmhmmh [[:alnum:]_]* \([ab0-9]*\) [[:digit:]]*/\1/p'
05451ab8

正如 trpleee 指出的那样,不要使用\w任何一种。


推荐阅读