将变量传递给 awk gsub

将变量传递给 awk gsub

我有这个命令
在这里

vovar=对象
prvar="$(awk '/'"$vovar"'/,/}/ {gsub("$vovar"," "); gsub("}",": %s,"); gsub("{"," ");gsub(",",": %s,");print}' temp1)"

temp1 的内容

ciscoFlashCopyCompletionTrap 通知类型
        对象   
                {
                ciscoFlashCopy状态  
                }
        状态当前
        描述
                “ciscoFlashCopyCompletionTrap 在
                完成闪存复制操作,如果这样的陷阱
                在操作开始时就被请求。
        ::= { ciscoFlashMIBTraps 1 }

我想要命令做什么

                ciscoFlashCopy状态  
                :%s:%s,

它实际上做了什么

        对象   

                ciscoFlashCopy状态  
                :%s:%s,

我怎样才能改变我的 awk 命令以便得到我想要的结果?

答案1

vovar第一次使用了外部单引号,但第二次没有使用:

... awk '/'"$vovar"'/,/}/ {gsub("$vovar"," ") ...

如果你一直坚持:

$ awk '/'"$vovar"'/,/}/ {gsub("'"$vovar"'"," "); gsub("}",": %s,"); gsub("{"," ");gsub(",",": %s,");print}' foo


                ciscoFlashCopyStatus  
                : %s: %s,

相关内容