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 22/03/2007, 17h28   #1
Membre à l'essai
 
Inscription : juillet 2004
Messages : 32
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 32
Points : 22
Points : 22
Par défaut [RESOLU]gerer les commentaires (#) dans le parsing d'un fichier de conf

Bonjour,

Je cherche a automatiser la generation de fichiers de conf et pour cela, je dois parser des fichiers contenant des infos.
Or pour etre propre, je souhaite commencer par ne pas traiter les lignes commencants par # de facon a pouvoir commenter mon fichier.
Mais, mes cours de shell sont bien loin, et je n'arrive pas a traiter le # sans mélanger le caractere # et ce qu'il represente en systeme (un truc vide).

Voici ce que j'ai ecrit pour selectionner les lignes qui m'interressent lors du traitement :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
#!/bin/sh
while read ligne
do
echo $ligne | cut -c 1 | read first_car
 if [ $first_car='#' ]
   then
          echo "$first_car"
   else
          echo ok!
 fi
 
done  < test.txt
echo fin
et le résultat est peu probant car il réagit comme s'il n'y avait que des commentaires d'un part et d'autre part, il sort sur la sortie 7 lignes vides correspondant a mes 7 lignes du fichier de test. Sur lequel poourtant il n'y a que 3 commentaires.

Quelqu'un a une idée de la marche a suivre svp?
elbronziero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2007, 17h46   #2
Lps
Nouveau Membre du Club
 
Inscription : novembre 2005
Messages : 84
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 84
Points : 32
Points : 32
Envoyer un message via Skype™ à Lps
Par défaut Astuce

Si tu veux toutes les lignes, sauf celles débutant par le caractère # :

__________________
Ludovic
Lps est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2007, 18h17   #3
Membre à l'essai
 
Inscription : juillet 2004
Messages : 32
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 32
Points : 22
Points : 22
Par défaut testé et approuvé

Bon, bin c'est effectivement pas mal d'utiliser grep
Je te remercie bcp.
elbronziero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2007, 19h45   #4
Membre à l'essai
 
Inscription : juillet 2004
Messages : 32
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 32
Points : 22
Points : 22
Par défaut script shell problématique

Nom du script: generateur de dhcpd.conf

Compatible avec: Bash

Descriptif: permet de generer la fin du fichier dhcpd.conf afin de ne pas avoir a editer les hosts systématiquement en parsant un fichier contenant un suite de données sous la forme MAC=XX:XX:XX:XX:XX
host=nom de l'hote

Pré-requis:Aucun

Bon, j'essaye d'avancer, et je galere pas mal.
j'ai écris ça.
C'est sans doute pas tres optimisé , et loin d'être parfaitement propre, mais en plus, ca ne marche pas...
Donc le but ultime sera de generer un bout de fichier contenant les mac et les hosts pour completer /etc/dhcp3/dhcp.conf
Et déjà, pour commencer, mon test de confirmation d'ecrasement me sort systematiquement si je commente pas le exit 0. (ligne 5)

Ensuite, je n'arrive pas a comparer ma valeur obtenue par le wc avec le x dans la boucle while (ligne 17)

Merci a ceux qui auraient deux minutes pour m'aider a redresser mon pov script

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
1 #!/bin/sh
2 echo 'Ce script va écraser le fichier actuel /etc/dhcp3/MAC.conf.'
3 echo 'Voulez-vous continuer? (O/N, par défaut N)'
4 read confirmation
5   if [ $confirmation!=O ]
6     then
7 #    exit 0
8      echo je sors
9   fi
10   if [ -f /etc/dhcp3/MAC.conf ]
11     then
12     mv /etc/dhcp3/MAC.conf /etc/dhcp3/MAC.conf-old
13   fi
14 echo #fichier de conf $date >> /etc/dhcp3/MAC.conf
15 wc -l test.txt | cut -c 1 | read nbligne
16 x=0
17 until [ $x -eq $nbligne ]
18 do
19 x=$x+1
20 grep -v ^# $1 | grep host | colrm 1 5 | read tabhost[$x]
21 grep -v ^# $1 | grep MAC  | colrm 1 4 | read tabMAC[$x]
22 
23 done
24
25 echo ${tabhost[*]}
26 echo ${tabMAC[*]}
elbronziero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2007, 21h10   #5
Membre Expert
 
Inscription : juillet 2006
Messages : 1 677
Détails du profil
Informations personnelles :
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : juillet 2006
Messages : 1 677
Points : 1 812
Points : 1 812
Salut !

De tête (suis sous Ouinouin, là, peux pas tester...), pour la ligne 5 essaye
Code :
   if [ $confirmation != 'O' ] # simple quote, pas sûr
ou
Code :
   if [ $confirmation != "O" ] # double quote, probable.
Et attention à la casse lors de la saisie (mais ça tu le savais déjà, je suppose).
Mes 2 cts,
--
jp
Jipété est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2007, 15h07   #6
Rédacteur
 
Inscription : mars 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 298
Points : 1 450
Points : 1 450
bon :
Code :
1
2
 
wc -l test.txt | cut -c 1 | read nbligne
cela s'ecrit :
Code :
1
2
 
nbligne=$(wc -l test.txt | cut -c 1)
la nbligne est initialiser avec le nombre de ligne (sur 1 caractere attention)
__________________
Marc
Slackware for ever ......
BASH - KSH ( http://marcg.developpez.com/ksh/ )
MarcG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2007, 01h58   #7
Membre à l'essai
 
Inscription : juillet 2004
Messages : 32
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 32
Points : 22
Points : 22
Par défaut a tester :)

Merci a vous deux.

Pour la casse oui, Jipété j'avais fait attention, et je vais essayer ta version.

Et MarcG, pour ta syntaxe, il me semblait l'avoir essayé sans succès mais je vais tester des que je rentre au bureau.

A suivre,

Merci de votre aide
elbronziero est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h15.


 
 
 
 
Partenaires

Hébergement Web