![将变量传递给 awk gsub](https://linux22.com/image/982013/%E5%B0%86%E5%8F%98%E9%87%8F%E4%BC%A0%E9%80%92%E7%BB%99%20awk%20gsub.png)
我有这个命令
在这里
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,