Linux: récupérer une partie d'un texte...

Résolu/Fermé
marco.marco Messages postés 29 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 29 novembre 2013 - 10 nov. 2010 à 12:17
marco.marco Messages postés 29 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 29 novembre 2013 - 10 nov. 2010 à 17:14
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

dubcek Messages postés 18545 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 27 septembre 2022 5 556
10 nov. 2010 à 13:53
hello
on crée des fichiers qui s'appellent serveur_N
 awk '/^serveur/ {nom=$(NF-1) "_" $NF} nom {print > nom}' fichier
0
marco.marco Messages postés 29 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 29 novembre 2013 1
10 nov. 2010 à 17:14
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 !
0