comment récupérer une valeur entre guillemets doubles avec plusieurs guillemets en ligne à l'aide de sed


0

J'essaie d'utiliser sed pour récupérer la valeur de 'identificateur' à partir de la ligne ci-dessous, qui est la chaîne 'TestStudioJobResponseMessages' dans l'exemple ci-dessous. Je ne souhaite pas non plus utiliser la chaîne uuid dans mon expression sed, car certaines lignes pourraient ne pas en avoir. Donc, idéalement, ce que je recherche, c’est la valeur entre la 1ère paire de guillemets doubles après le mot "identifier =".

sed -n 's/.\*identifier=\"\(.\*\)\" .*/\1/p'

ce qui résulterait tout jusqu'à la fin de la ligne.

sibres de qualité

Réponses:


0

Vous semblez traiter un fichier XML. Utilisez un outil de gestion XML approprié, par exemple xsh :

open file.xml ;
register-namespace sr http://www.ibm.com/websphere/appserver/schemas/6.0/sibresources.xmi ;
for //sr:SIBQueue echo @identifier ;

Merci pour l’option, son fichier xml utilise toutefois cygwin sur une machine Windows, donc xsh ne sera pas là, donc avec cygwin bash shell, et à la recherche d’une alternative séd
shuklaa02

J'utilise aussi la bash de cygwin. xsh peut être installé par cpan XML::XSH2 (vous avez besoin de libxml et de Perl).
choroba

Merci cependant, je dois fournir un script aux utilisateurs qui ne voudraient pas installer xsh / perl, cherchant ainsi une option plus simple d'utilisation de bash
shuklaa02

0

Utiliser GNU sed:

sed -r 's/.*identifier="([a-zA-Z]+)".*/\1/'

OU

sed -r 's/.*identifier="([^"]+)".*/\1/'
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.