改进 grep 后向查找以避免数字

改进 grep 后向查找以避免数字

当我查询时docker images,我得到了这个:

#> docker images
REPOSITORY          TAG            IMAGE ID           CREATED             VIRTUAL SIZE
local/debian        7.5            172c7702a46f       2 weeks ago         175.1 MB
local/debian        wheezy         172c7702a46f       2 weeks ago         175.1 MB

我使用grep提取图像标签:

#> docker images | grep -oP '\S+(?=\s+172c7702a46f)'
7.5
wheezy

我怎样才能完善这一点以wheezy仅获取并避免任何匹配的内容\d+\.\d+

答案1

表达式grep太复杂。使用awk更直接、更清晰的解决方案,不需要正则表达式向导来阅读:

docker images | awk '$3 == "172c7702a46f" && $2 ~ /^[a-z]/ {print $2}'

即:如果第 3 列是 172c7702a46f,并且第 2 列以字母开头,则打印第 2 列。

相关内容