J'utilise sed
pour trouver et supprimer l'expression de texte avec des parenthèses d'ouverture et de fermeture.Utilisation de sed pour remplacer le contenu entre parenthèses même s'il y en a plusieurs imbriqués
Exemple: sed -re 's/ SCYEXIT\([^)]+\)//g'
Works avec des crochets vides: SCYEXIT(' ')
Mais certains de mes lignes de texte ont deux paires de crochets et en boîte la recherche échoue ci-dessus.
exemple défaut: SCYEXIT('/var/mqm/exits/SecExitSender(SecurityExit)')
Le résultat est: ')
Certains des crochets sont vides (' ')
ou avoir un contenu ('FN=/var/mqm/exits/sendexit.data')
ou même une autre paire de crochets dans ce comme ('/var/mqm/exits/SecExitSender(SecurityExit)')
.
Comment puis-je gérer tous les supports correspondants?
Pour rendre les choses plus claires.
Je migre IBM MQ d'une plate-forme à une autre et il existe des différences dans les paramètres pour chaque plate-forme. Un exemple de configuration ressemble à ceci:
DEFINE QLOCAL ('postcard') SCYEXIT('/var/mqm/exits/SecExitSender(SecurityExit)') PROCESS(' ') PUT(ENABLED) DEFPRTY(0) REPLACE
Ici, je veux me débarrasser de SCYEXIT
et PROCESS
attribut indépendant du contenu de la paire de supports suivants. Vous, en tant qu'humain, comprenez immédiatement ce que je veux dire par le support ici. Les crochets peuvent être vides, ou avoir une valeur ou même une valeur imbriquée.
Le résultat que je veux obtenir est la suivante:
DEFINE QLOCAL ('postcard') PUT(ENABLED) DEFPRTY(0) REPLACE
Merci beaucoup Nicolaie
vous devez donner plus de détails sur vos données, comme il y a du texte après la fermeture ')' et ces données peuvent-elles contenir ')'? – Sundeep
Oui @ "sp asic", le texte est après le crochet de fermeture. Exemple d'extrait: DEFINE CHANNEL ('1234567890') CHLTYPE (RCVR) TRPTYPE (TCP) BATCHSZ (50) DESCRIPTION ('') HBINT (300) MAXMSGL (4194304) MCAUSER ('') MRDATA ('') MREXIT ('') MRRTY (10) MRTMR (1000) MSGDATA ('') MSGEXIT ('') NPMSPEED (FAST) PUTAUT (DEF) RCVDATA ('') RCVEXIT ('') SCYDATA ('') SCYEXIT ('/ var/mqm/exits/SecExitSender (SecurityExit) ') REMPLACEZ – Nicolaie
et ce texte contient-il ')'? sinon, essayez 'sed 's/SCYEXIT (. *) // g'' – Sundeep