Linux: récupérer une partie d'un texte... [Résolu/Fermé]

Signaler
Messages postés
29
Date d'inscription
mardi 1 juillet 2008
Statut
Membre
Dernière intervention
29 novembre 2013
-
Messages postés
29
Date d'inscription
mardi 1 juillet 2008
Statut
Membre
Dernière intervention
29 novembre 2013
-
Bonjour !!

Voilà mon problème: j'ai un fichier sous linux, agencé de cette manière:

-----------
serveur: nom du serveur 1
-----------

descriptif du serveur (sur x lignes)

-----------
serveur: nom du serveur 2
-----------

descriptif du serveur (sur x lignes)

-----------
serveur: nom du serveur 3
-----------

ect...


J'ai besoin de découper ce fichier en autant de fois qu'il y a de serveurs, pour avoir un fichier distinct par serveur.
Je connais bien les commandes awk, cut, grep, sed and co, mais pas assez pour cette opération ;-)

Le problème étant que le déscriptif du serveur en question varie forcemment d'un serveur à l'autre. Donc pas possible de découper le fichier toutes les 40 lignes par ex.

Le point commun, ce qui permettra de découper le fichier, c'est qu'ils commencent tous par ^onze tirets, un retour à la ligne, serveur : et le nom du serveur.

Avec un grep je peux donc récupérer ces lignes mais comment définir dans mon cut que les onze tirets suivants concernent un autre serveur et donc qu'il faut découper le fichier à cet endroit ?

C'est peut etre tout simple à faire mais après de longues recherches dans mon "unix tout en poche" je ne vois pô....

Quelqu'un aurait une idée ???

Mille mercis d'avance !!!



2 réponses

Messages postés
18240
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
30 novembre 2020
5 278
hello
on crée des fichiers qui s'appellent serveur_N
 awk '/^serveur/ {nom=$(NF-1) "_" $NF} nom {print > nom}' fichier
Messages postés
29
Date d'inscription
mardi 1 juillet 2008
Statut
Membre
Dernière intervention
29 novembre 2013

Merci pour ta réponse dubcek !
Puissant comme commande !!!
J'ai juste eu à modifier un peu mon fichier avant (le type de serveur était indiqué entre crochet juste après son nom : "serveur : serveur1 [windows 2000]", ce qui compliquait un peu la chose...)

Encore merci !