Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/07/2011, 17h19   #1
Invité de passage
 
Inscription : juin 2010
Messages : 6
Détails du profil
Informations forums :
Inscription : juin 2010
Messages : 6
Points : 2
Points : 2
Par défaut Script pour supprimer contenu d'un fichier

Bonjour tout le monde.

J'ai un fichier qui contient des entrées du type:

define host{
use generic-host
host_name nomduhost
address xxx.xxx.xxx.xxx
}

Je veux écrire un script bash qui identifie la présence d'un paragraphe du type de celui exposé ci-dessus et le supprime si le nom "nomduhost" correspond à celui que je recherche.

Je me suis dit que la commande sed pourrait éventuellement me permettre de résoudre ma problématique.
J'arrive facilement à trouver la ligne host_name nomduhost et à la supprimer, mais je ne sais pas comment m'y prendre pour supprimer celles qu'il y a avant et après.

Quelqu'un aurait-il la gentillesse de m'aider?

Merci beaucoup d'avance à ceux qui me répondront!
Ayor9 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/08/2011, 04h11   #2
Membre habitué
 
Avatar de Levi59
 
Homme
Étudiant
Inscription : août 2011
Messages : 46
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2011
Messages : 46
Points : 126
Points : 126
Si la forme est toujours la même, avec 5 lignes à supprimer et le motif au centre, le plus simple serait de faire :

Code :
1
2
3
NUM=$(grep -n "nomduhost" fichier.txt)
NUM=${NUM%%:*}
sed -i ''$(( ${NUM} - 2 ))','$(( ${NUM} + 2 ))'d' fichier.txt
Levi59 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/08/2011, 08h29   #3
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Salut,


Code :
sed -i.bak '/define/{N;N;N;N;/nomduhost/d}' fichier
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/08/2011, 09h08   #4
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Ou avec "ed" aussi :

Code :
ed -s plop <<<$'/nomduhost/-2,//+2d\nw'
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 01
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h12.


 
 
 
 
Partenaires

Hébergement Web