Insertion ligne avec ksh

abiss -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
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. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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 ?
    0
    1. abiss
       
      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
      0
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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$
    ;-))
    0
    1. abiss
       
      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.
      0
  3. jmg78
     
    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"
    %
    0
  4. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Essaye comme ça alors :
    sed '
    /^include/ !b
    N
    \|^include.*\ninclude.*$| {
        P
        D
    }
    s#^\(.*\n\)\(.*\)#\1include /udir/fethy/fet.schema\n\2#
    ' fichier
    ;-))
    0