来自字符串的grep日期

时间:2018-08-10 00:26:19

标签: linux grep

我正在尝试从字符串中打印任何日期值。例如:

echo "08/08/2018 text here" | grep '/(0\d{1}|1[0-2])\/([0-2]\d{1}|3[0-1])\/(19|20)\d{2}/'

这不会返回结果。我只想打印日期值,不包括此处的文本。

1 个答案:

答案 0 :(得分:1)

grep不在正则表达式周围使用/分隔符,并且不需要您转义嵌入式/

您需要使用-P选项来对GNU grep使用PCRE正则表达式,以便它将\d识别为数字。

您应将\b放在正则表达式周围,以匹配单词边界。否则,如果输入内容包含108/08/2018,则它将匹配1之后的日期。

您需要-o选项仅打印匹配行的一部分,而不打印整个匹配行。

echo "08/08/2018 text here" | grep -Po '\b(0\d{1}|1[0-2])/([0-2]\d{1}|3[0-1])\/(19|20)\d{2}\b'