Debian 中的 grep 和 OSX 不同的结果

grep in Debian and OSX different results

我有一个 Dockerfile 并想从中 grep AIRFLOW_VERSION:

Dockerfile

ARG AIRFLOW_VERSION="2.1.0" <---- This one

这个命令在我的本地机器上工作正常 (OSX):

export AIRFLOW_VERSION=$(grep "ARG AIRFLOW_VERSION=" /Dockerfile | grep -Eo "\d\.\d\.\d")
echo $AIRFLOW_VERSION                                                                                                             
2.1.0

但是当我在 Debian 机器(Gitlab Runner)上 运行 它时,它什么也没找到。把运行ner的镜像拉到本地,仔细检查,没有找到。文件在那里,文件放错地方丢失没有问题。

我认为该问题与 grep 实施的不同版本有关:GNU 用于 Debian,BSD 用于 Mac OS。

尝试将 -E 替换为 -P,例如:grep -Po "\d\.\d\.\d".

您正在尝试使用 perl 正则表达式 (PCRE):

echo AIRFLOW_VERSION="2.1.0" | grep -Po "\d\.\d\.\d"

在 debian 上,-E 表示扩展正则表达式 (ERE):

 echo AIRFLOW_VERSION="2.1.0" | grep -oE "[0-9]+\.[0-9]+\.[0-9]+"