sed为什么不尊重简单的正则表达式?

时间:2019-08-16 05:12:53

标签: sed

  • 我的文字:mmhmmh here_is_you 05451ab8 888
  • 我的正则表达式:mmhmmh \w* ([ab0-9]*) \d*
  • 我的sed命令:echo "mmhmmh here_is_you 05451ab8 888" | sed -n 's/mmhmmh \w* \([ab0-9]*\) \d*/\1/p'
  • 结果:用05451ab8888代替05451ab8

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

1 个答案:

答案 0 :(得分:-1)

正如Cyrus在评论链接中指出的那样,\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