Rechercher : dans
Par :

Fonction sed (script shell)

Dernière réponse le 24 jun 2008 à 20:30:36 Kessie, le 24 jun 2008 à 18:31:42 
 Signaler ce message aux modérateurs

Bonjour,
j'ai un petit problème avec ma fonction sed dans un script shell, lorsque je teste le script, j'ai un message d'erreur comme quoi la fonction sed est imcomplete... (je cherche à effacer des lignes pour enlever un virtualhost)

#!/bin/sh

#trouver un numero de ligne grace à un mot clé
$var=`grep -n $1 /etc/bind/named.conf | cut -d : -f 1`

#effacer un intervalle de lignes
sed '\$var,\$var+3d' /etc/bind/named.conf

#effacer le fichier correspondant au mot clé
rm /etc/bind/$1

Merci d'avance

Configuration: Linux
Firefox 3.0

Meilleures réponses pour « Fonction sed (script shell) » dans :
Sed - Introduction à SED - Part I VoirSED - The Stream EDitor - Part I Ce document est une introduction à la pratique et à l'utilisation de l'éditeur de flux "SED", qui essaie de couvrir certaines fonctionnalités assez méconnues, pour ne pas dire "quasi inconnues", qui font de "SED" un...
Exécuter un script shell VoirExécution d'un script Pour pouvoir exécuter un script ou un programme en ligne de commande il y a plusieurs possibilités : 1. Le chemin absolu 2. Le chemin relatif 3. Modifier la variable PATH Note: Le Sha...
Sed - Supprimer une ou plusieurs lignes d'un fichier VoirSupprimer une (ou plusieurs) ligne(s) d'un fichier Syntaxe sed '{[/]||[/]}d' sed '{[/][,][/]d' /.../ = délimiteurs n = le numéro de ligne chaîne = la chaîne contenue dans la...

1

jipicy, le 24 jun 2008 à 18:38:20

Salut,

A quoi ressemble "$var" et qu'espères-tu faire à partir de "'\$var,\$var+3d'" ???
JP - Éleveur de pingouins -
Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot.

Répondre à jipicy

2

jipicy, le 24 jun 2008 à 18:48:35

Et si tu essayais tout simplement :

sed "/$1/,+3d" /etc/bind/named.conf 
sans le "grep" et donc sans le "$var", hein ?

;-)) JP - Éleveur de pingouins -
Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot.

Répondre à jipicy

3

iti07m, le 24 jun 2008 à 19:02:18

Merci pour tes réponses jipicy
$var est le numero de la ligne ou se trouve le mot clé $1
Apres je veux effacer cette ligne ainsi que les trois suivantes.
Je vais essayé ta méthode
Encore merci de m'avoir répondu

Répondre à iti07m

4

Kessie, le 24 jun 2008 à 20:06:20

J'ai essayé en supprimant le grep et en mettant ta ligne de code,
comme résultat sa m'affiche mon fichier avec les lignes qui ont bien été effacé mais lorsque j'ouvre
mon fichier dans une autre fenetre, les lignes sont toujours là...

Répondre à Kessie

5

jipicy, le 24 jun 2008 à 20:08:49

Rajoutes ça alors :

sed  -i.bak "/$1/,+3d" /etc/bind/named.conf
non seulement ça éditera le fichier "en place", mais en plus ça fera une sauvegarde nommée "named.conf.bak".

;-)) JP - Éleveur de pingouins -
Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot.

Répondre à jipicy

6

Kessie, le 24 jun 2008 à 20:21:47

Merci beaucoup :)

Répondre à Kessie

7

jipicy, le 24 jun 2008 à 20:25:34

De rien ;-))
JP - Éleveur de pingouins -
Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot.

Répondre à jipicy

8

 Kessie, le 24 jun 2008 à 20:30:36

C'est bon sa marche en faisant:

sed -i "/$1/,+3d" /etc/bind/named.conf

j'efface bien les quatres lignes et le fichier est sauvegardé

Merci beaucoup de ton aide, c'est très sympa
Bonne soirée ;)

Répondre à Kessie
Collection CommentÇaMarche.net