Insertion ligne avec ksh

Fermé
abiss - 3 avril 2008 à 17:06
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 5 avril 2008 à 10:14
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.
A voir également:

4 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
4 avril 2008 à 11:23
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
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
4 avril 2008 à 16:32
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
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
Utilisateur anonyme
4 avril 2008 à 18:30
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
5 avril 2008 à 10:14
Essaye comme ça alors :
sed '
/^include/ !b
N
\|^include.*\ninclude.*$| {
    P
    D
}
s#^\(.*\n\)\(.*\)#\1include /udir/fethy/fet.schema\n\2#
' fichier
;-))
0