Insertion plusieurs lignes dans fichier (ksh)

Résolu
Bonjour,
Je suis un débutant en shell (ksh) et j'ai besoin de faire le traitement suivant:
J'ai besoin d'insérer plusieurs lignes dans un fichiers xml juste avant la fin d'une balise:
example:
<ActionMapping>
<Action name="ParamChange" value="s3i">
<Task name="parameter change v3" description="parameter Change version 3"/>
</Action>
<Action name="ParamChange" value="v4m">
<Task name="parameter change v4" description="parameter Change version 4"/>
</Action>
</ActionMapping>


je veux insérer avant la balise </ActionMapping> les lignes suivantes
<Action name="UpgradeSession" value="v1">
<Task name="upgrade session" description="upgrade sessions version 1"/>
</Action>


Merci d'avance de votre aide.
Configuration: solaris

2 réponses

  1. Modérateur
    Salut,
    [jp@MDK-2008 trash]$ cat atef
    <ActionMapping>
    <Action name="ParamChange" value="s3i">
    <Task name="parameter change v3" description="parameter Change version 3"/>
    </Action>
    <Action name="ParamChange" value="v4m">
    <Task name="parameter change v4" description="parameter Change version 4"/>
    </Action>
    </ActionMapping>
    
    [jp@MDK-2008 trash]$ sed -i.BAK '\#</ActionMapping>#i\
    <Action name="UpgradeSession" value="v1">\
    <Task name="upgrade session" description="upgrade sessions version 1"/>\
    </Action>
    ' atef
    
    [jp@MDK-2008 trash]$ cat atef
    <ActionMapping>
    <Action name="ParamChange" value="s3i">
    <Task name="parameter change v3" description="parameter Change version 3"/>
    </Action>
    <Action name="ParamChange" value="v4m">
    <Task name="parameter change v4" description="parameter Change version 4"/>
    </Action>
    <Action name="UpgradeSession" value="v1">
    <Task name="upgrade session" description="upgrade sessions version 1"/>
    </Action>
    </ActionMapping>
    [jp@MDK-2008 trash]$ 
    ;-))
    0
    1. Salut
      c magique :-)
      Merci beaucoup.
      0
    2. Bonjour,
      Merci pour votre aide mais est ce que vous pouriez me dire comment éditer les caractères spéciaux dans ce cas.
      mon cas est le suivant : la chaîne que je veux insérer contient le caractère " ' "
      Voici la chaine :
      <xsl:stylesheet
      xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0'>
      <xsl:output method="xml" />
      <xsl:param name="host"/>
      <xsl:param name="port"/>

      <xsl:template match="/">
      <xsl:apply-templates/>
      </xsl:template>

      <xsl:template match="config-property[@name='ConnectionURL']">
      <config-property type="java.lang.String" name="ConnectionURL">jdbc:hsqldb:hsql://<xsl:value-of select='$host'/>:<xsl:value-of select='$port'/></config-property>
      </xsl:template>

      <xsl:template match="*|@*">
      <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
      </xsl:copy>
      </xsl:template>
      </xsl:stylesheet>
      ]]>

      Merci
      0
    3. Modérateur
      @manouSuffit de protéger les " ' " par des anti-slash " \' ".
      0
    4. @jipicyça n'a pas marché.
      Ce que j'ai fait c'est :
      déclarer la variable QUOTE
      puis j'ai utilisé la syntaxe suivante :

      <xslt-config configName="Configuration"><![CDATA[\
      <xsl:stylesheet\
      xmlns:xsl='"$QUOTE"'http://www.w3.org/1999/XSL/Transform'"$QUOTE"' version='"$QUOTE"'1.0'"$QUOTE"'>\
      <xsl:output method="xml" />\
      <xsl:param name="port"/>\
      <xsl:template match="/">\
      <xsl:apply-templates/>\
      </xsl:template>\
      <xsl:template match="attribute[@name='"$QUOTE"'serverBindPort'"$QUOTE"']">\
      <attribute type="java.lang.String" name="serverBindPort"><xsl:value-of select='"$QUOTE"'$port'"$QUOTE"'/></attribute>\

      Merci.
      0
  2. Modérateur
    Affiche ce que tu veux exactement avec un fichier AVANT et APRÈS.
    0