Vérifier si la derniére d'un fichier est une ligne vide

Vérifier si la derniére d'un fichier est une ligne vide - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 20-11-2009 à 11:32:28    

Bonjour,
 
j'ai crée un petit script pour vérifier mes fichiers sources (Langage VHDL). Et notament, dans ce script, je vérifie que la présence d'une dernier ligne vide à la fin de mon fichier (et une seule).  
 
Pour ce faire, je fait :
 

Code :
  1. # Derniere ligne du fichier
  2. num_ligne_totale=`cat $FICHIER_VHDL | wc -l`
  3. num_ligne_totale=`expr $num_ligne_totale + 1`
  4. # Derniere ligne du fichier contenant : END TEST;
  5. num_ligne_end=`cat $FICHIER_VHDL | grep -n "END TEST;" | awk -F: '{print $1}'`
  6. # Nombres de ligne voulue : num_ligne_end + 1
  7. num_ligne_totale_normale=`expr $num_ligne_end + 1`
  8. # Si la dernier ligne du fichier n'est pas vide nous ajoutons une nouvelle ligne
  9. ETAT="0"
  10. if [ $num_ligne_end -eq $num_ligne_totale ]; then
  11.    echo "" >> $FICHIER_VHDL
  12.    ETAT="1"
  13. # Nous effacons les lignes vides en fin du fichier en laissant une ligne blanche
  14. elif [ $num_ligne_totale -gt $num_ligne_totale_normale ]; then
  15.    num_ligne_end=`expr $num_ligne_end + 1`
  16.    sed -i "${num_ligne_end},${num_ligne_totale} d" $FICHIER_VHDL
  17.    ETAT="1"
  18. fi
  19. if [ "$ETAT" -ne "0" ]; then
  20.     echo -e "--> Failed n"
  21. else
  22.     echo -e "--> OK n"
  23. fi


 
Cela fonctionne bien, mais c'est peut etre un peu lourd, et pas forcement (voir pas du tout) optimisé.
 
Donc, je me demandais, et je voulais vous demander s'il n'y avait pas un moyen plus simple pour faire cela.  
merci.


---------------
Celui qui sauve une vie, sauve l'humanité (Le Talmud) - Personne n'a plus grand amour que celui de donner sa vie pour ses amis (Jean XV, 13)
Reply

Marsh Posté le 20-11-2009 à 11:32:28   

Reply

Marsh Posté le 20-11-2009 à 11:49:53    

[ $(tail -1 fichier | wc -w) -eq 0 ] && echo "OK" || echo "FAIL"

 

[:prodigy]


Message édité par wedgeant le 20-11-2009 à 11:51:04

---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
Reply

Marsh Posté le 20-11-2009 à 12:01:47    

salut,

 

Je viens d'essayer mais ca n'a pas l'air de marcher.
Exemple de fichier


blabla
END TEST;
(ceci est une ligne vide)

 

Si j'applique la commande :


[ $(tail -1  tb_COHERENCE_Voltage_FL_Function.vhd | wc -w) -eq 0 ] && echo "OK" || echo "Fail"

 

j'obtiens


Fail

 

Alors qu'il y a bien une ligne vide  à la fin de mon fichier. J'ai l'impression que tail enleve la dernière ligne si elle est vide.


Message édité par le fou le 20-11-2009 à 12:02:59

---------------
Celui qui sauve une vie, sauve l'humanité (Le Talmud) - Personne n'a plus grand amour que celui de donner sa vie pour ses amis (Jean XV, 13)
Reply

Marsh Posté le 20-11-2009 à 12:03:03    

ta ligne n'est pas vide, y'a un espace [:aloy]


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
Reply

Marsh Posté le 20-11-2009 à 12:06:25    

Pour ne pas tenir compte des espaces qui pourraient s'être glissés sans prévenir:

[ $(tail -1 fichier | sed -e 's@ @@g' | wc -w) -eq 0 ] && echo "OK" || echo "FAIL"


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
Reply

Marsh Posté le 20-11-2009 à 12:08:01    

mais par contre si t'as 2 lignes vides, faut adapter quoi, là je vérifie seulement que la dernière est bien vide :o


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
Reply

Marsh Posté le 20-11-2009 à 12:17:08    

à quoi ca sert de savoir si la dernière ligne d'un fichier est vide?

Reply

Marsh Posté le 20-11-2009 à 13:22:36    

wedgeant a écrit :

mais par contre si t'as 2 lignes vides, faut adapter quoi, là je vérifie seulement que la dernière est bien vide :o


 
Ah, je crois avoir compris pourquoi. En fait, je me suis fait avoir par mon editeur de texte. Mais un coup d'oeil avec vi (ou cat -nA) m'a permis de voir qu'en fait je n'avais pas de ligne vide en fin de fichier.
 

morris aka the moose a écrit :

à quoi ca sert de savoir si la dernière ligne d'un fichier est vide?


 
Ben en fait, je souhaite, que tous mes fichiers est leur dernière ligne vide, car il me semblait cela nécessaire  sous linux.
 


---------------
Celui qui sauve une vie, sauve l'humanité (Le Talmud) - Personne n'a plus grand amour que celui de donner sa vie pour ses amis (Jean XV, 13)
Reply

Marsh Posté le 20-11-2009 à 13:24:32    

Il me semblait que tous les programmes l'ajoutaient si celles-ci s'avérait absente...


---------------
Décentralisons Internet-Bépo-Troll Bingo - "Pour adoucir le mélange, pressez trois quartiers d’orange !"
Reply

Marsh Posté le 21-11-2009 à 10:08:00    

le fou a écrit :

 

Ben en fait, je souhaite, que tous mes fichiers est leur dernière ligne vide, car il me semblait cela nécessaire  sous linux.

 



T'as lu ça où ? [:tibo2002]

Message cité 1 fois
Message édité par e_esprit le 21-11-2009 à 10:08:20

---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 21-11-2009 à 10:08:00   

Reply

Marsh Posté le 21-11-2009 à 11:43:42    

Je crois que c'est GCC qui est pas content si y'en a pas. Ou ç'a été le cas avant.


---------------
Be the one with the flames.
Reply

Marsh Posté le 21-11-2009 à 19:19:29    

Dans sa version 0.1 ? :D
 
Pis bon gcc != Linux :o


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 22-11-2009 à 11:43:46    

e_esprit a écrit :


T'as lu ça où ? [:tibo2002]


 
 
Ben, justement je sais pas. Et j'en étais pas sur.  
 
Mais pour mes fichiers, j'en ai besoin, c'est pour ca que je faisais ce bout de script.


---------------
Celui qui sauve une vie, sauve l'humanité (Le Talmud) - Personne n'a plus grand amour que celui de donner sa vie pour ses amis (Jean XV, 13)
Reply

Marsh Posté le 26-11-2009 à 20:01:02    

morris aka the moose a écrit :

à quoi ca sert de savoir si la dernière ligne d'un fichier est vide?

 

parce que un fichier qui se termine par une ligne vide, c'est un peut moins emmerdant? :o

 


debian@debian:~$ cat > pouet
à quoi ca sert de savoir si la dernière ligne d'un fichier est vide?debian@debian:~$
debian@debian:~$
debian@debian:~$ cat pouet
à quoi ca sert de savoir si la dernière ligne d'un fichier est vide?debian@debian:~$

 

(example de fichier qui ne se termine pas par une ligne vide)


Message édité par blazkowicz le 26-11-2009 à 20:01:51
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed