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]+"
我有一个 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]+"