小编Mar*_*lin的帖子

AWK:如何用正则表达式比较两个变量

我有一行用冒号分隔的值,我想在 awk 中处理。如果$4变量$3在开头包含变量,则行的处理方式不同。

所以我写了表达式: $4 ~ /^$3/,但不幸的是这不起作用,它永远不会匹配。怎么了,如何在正则表达式模式中使用变量?

这是完整的示例:

green="$(tput setaf 2)"
red="$(tput setaf 1)"
yellow="$(tput setaf 3)"
normal="$(tput sgr0)"

stacks=$(docker stack ls --format='{{.Name}}')

for stack in ${stacks}; do
    status=$(docker stack ps --filter="desired-state=running" --format="{{.Name}}:{{.Node}}:{{.DesiredState}}:{{.CurrentState}}:{{.Error}}" ${stack})
    if test -z "$status"; then
        echo "${red}$stack$: disabled${normal}"
    else
        awk -F: '                                                                            
            $4 ~ /^$3/ {print "GOOD '"${green}"'" $1 ": " $4 "'"${normal}"'"}                
            $4 !~ /^$3/ {print "BAD '"${yellow}"'" $1 ": " $3 " ? " $4 $5 "'"${normal}"'"}   
        ' <<<${status} …
Run Code Online (Sandbox Code Playgroud)

awk regular-expression

4
推荐指数
2
解决办法
3514
查看次数

标签 统计

awk ×1

regular-expression ×1