web-dev-qa-db-fra.com

Passer variable dans awk gsub

J'ai cette commande
Ici

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

Contenu de temp1

 ciscoFlashCopyCompletionTrap NOTIFICATION-TYPE 
 OBJETS 
 {
 ciscoFlashCopyStatus 
} 
 STATUS actuel 
 DESCRIPTION 
 "Une ciscoFlashCopyCompletionTrap est envoyée à la fin de 
 D’une opération de copie rapide si un tel piège 
 A été demandé lors du lancement de l’opération. 
" 
 :: = {ciscoFlashMIBTraps 1} 

Ce que je veux que la commande fasse

 ciscoFlashCopyStatus 
:% s:% s, 

Ce qu'il fait réellement

 OBJETS 
 
 CiscoFlashCopyStatus 
:% S:% s, 

Comment puis-je changer ma commande awk afin que je puisse obtenir ce que je veux?

4
SamFlynn

Vous avez utilisé vovar en dehors de guillemets simples pour la première fois, mais pas pour la deuxième fois:

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

Si vous aviez été cohérent:

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


                ciscoFlashCopyStatus  
                : %s: %s,
4
muru