下面的命令将返回相应的字符串
$ docker-compose exec postgres postgres --version
postgres (PostgreSQL) 10.4 (Debian 10.4-2.pgdg90+1)
我正在尝试获取postgresql版本,但是当我尝试时,会包括Debian版本和其他数字,例如
$ pg_version=$(docker-compose exec postgres postgres --version | sed 's/[^0-9.]//g')
10.410.42.901
我想知道如何只获得10.4
答案 0 :(得分:1)
按如下所示修改sed
会有所帮助,
sed -E 's/.*PostgreSQL[^0-9.]+([0-9.]*).*/\1/'
\1
仅与“ PostgreSQL”后面的版本号匹配。
答案 1 :(得分:1)
pg_version=$(docker-compose exec postgres postgres -V | grep -oE '[.0-9]+' | head -1)
答案 2 :(得分:1)
awk -v RS=" " '/^[0-9.]+$/{print; exit}'
grep -oE '[.0-9]+' | head -1
tr ' ' '\n' | grep -oE -m 1 '[.0-9]+'
sed 's|^[^0-9.]*\([0-9.]\+\).*|\1|'
答案 3 :(得分:0)
您可以将grep
与以下内容一起使用:
$ grep -oP "PostgreSQL.\s\K.+?(?=\s)"
例如:
$ echo "postgres (PostgreSQL) 10.4 (Debian 10.4-2.pgdg90+1)" | grep -oP "SQL.\s\K.+?(?=\s)"
10.4
可以将\K
理解为排除在左边*SQL)<space>
之前的所有内容,并仅返回右边的部分.+?(?=\s)
,直到找到空格\s
。