Insertion ligne avec ksh

Bonjour,
j ai besoin d'insérer une ligne dans un fichier en utilisant un script shell (ksh):
La ligne doit etre inserer juste apres une ligne specifique:
Exp:
# This file should NOT be world readable.

include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/nis.schema
include /udir/atef/NGSEC/LDAP/ngsec.schema

# Define global ACLs to disable default read access.


Je veux insérer un nouveau include a la fin des includes actuels:
# This file should NOT be world readable.

include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/nis.schema
include /udir/fethy/fet.schema

# Define global ACLs to disable default read access.
Configuration: Linux
Firefox 2.0.0.13

4 réponses

  1. Modérateur
    Essaye comme ça alors :
    sed '
    /^include/ !b
    N
    \|^include.*\ninclude.*$| {
        P
        D
    }
    s#^\(.*\n\)\(.*\)#\1include /udir/fethy/fet.schema\n\2#
    ' fichier
    ;-))
    1. il faut donner la partie de ton script qui fait ça

      cela doit etre un truc du genre
      echo "
      include machin
      include chose
      " > mon_fichier
      ou
      cat <<% >mon_fichier
      include "truc"
      include "chose"
      %
      1. Modérateur
        jp@MDK:~/tmpfs ssh$ cat abiss
        include /etc/openldap/schema/core.schema
        include /etc/openldap/schema/cosine.schema
        include /etc/openldap/schema/nis.schema
        
        # Define global ACLs to disable default read access.
        
        jp@MDK:~/tmpfs ssh$ sed '/include/,/^$/{s#^$#include /udir/fethy/fet.schema\n&#}' abiss
        include /etc/openldap/schema/core.schema
        include /etc/openldap/schema/cosine.schema
        include /etc/openldap/schema/nis.schema
        include /udir/fethy/fet.schema
        
        # Define global ACLs to disable default read access.
        
        jp@MDK:~/tmpfs ssh$
        ;-))
        1. Salut,
          Merci pour la réponse, mais cette commande ne marche pas s'il n'y a aucune ligne vide après le dernier include.
      2. Modérateur
        Salut,

        C'est pas clair ton histoire, déjà tu dis que tu veux insérer une nouvelle ligne après une ligne spécifique et dans ton exemple tu remplaces une ligne existante...

        Donc, c'est lequel des 2 que tu veux, insertion ou remplacement ?

        Je veux insérer un nouveau include a la fin des includes actuels
        En fait c'est ça que tu veux juste ?
        1. Salut
          je m'excuse en fait je me suis trompé en faisant l'example
          Ma demande est pour l'insertion d une nvelle ligne et non le remplacement
          Exp:

          include /etc/openldap/schema/core.schema
          include /etc/openldap/schema/cosine.schema
          include /etc/openldap/schema/nis.schema

          # Define global ACLs to disable default read access.

          Je veux insérer un nouveau include a la fin des includes actuels:

          include /etc/openldap/schema/core.schema
          include /etc/openldap/schema/cosine.schema
          include /etc/openldap/schema/nis.schema
          include /udir/fethy/fet.schema