Votre question

perl : suppression de ligne dans un fichier

Tags :
  • Perl
  • Programmation
Dernière réponse : dans Programmation
28 Avril 2005 09:53:33

Bonjour tout le monde !

Voila j'ai un petit souci, je viens tout juste de commencé le perl (donc pas de moquerie), et je cherche quel code me permetterait de supprimer certaine ligne d'un fichier. une partie de ce fichier est ci dessous :


207 00:04:75:E9:EC:15 255.255.255.255 unknown
207 00:20:ED:6C:53:31 255.255.255.255 unknown
207 00:0F:1F:64:18:F2 14.75.15.200 srv35.conseil

il s'agit de champs qui sont respectivement n° de port/ adresse Mac / adresse IP / nom de machine collecté par snmp bref le souci n'est pas la.
Il y en a d'autres mais je n'ai pas tout mis car ce n'est pas important.

je suis allé voir dans certaines documentation et ca parlais vaguement de la fonction truncate() mais ca disait que ca supprimait seulement la derniere ligne


En fait il faudrait que le code supprime les lignes du fichier dans lesquelle se trouve les adresses 255.255.255.255 afin que celui ci s'en retrouve modifié.


Bon si vous savez quelquechose c'est gentil de m'aider
Merci d'avance
A+

ps : le fichier à modifier s'appelerait decoup.txt et on l'insererait dans la variable PORT grace à

  1. OPEN(PORT, c:/... /decoup.txt);

Autres pages sur : perl suppression ligne fichier

28 Avril 2005 10:58:45

en remplacant l'occurence de la chaine "207 00:04:75:E9:EC:15 255.255.255.255 unknown" par un vide .
$file=~s/207 00:04:75:E9:EC:15 255.255.255.255 unknown//
sa syntaxe est s/modele initiale /modele de remplacement/
28 Avril 2005 11:12:38

ok d'accord mais le probleme c'est qu'il faut que cette opération ce réa lise dans une boucle if.

en gros if $ligne[2] eq "255.255.255.255" then ... (suppression de la ligne)
parceque les information qui sont a coté de 255.255.255 ne sont jamais les meme.

Autre chose, je travaille sur un logiciel qui existe déja et il ne faut pas qu'il y est de blanc dans le fichier PORT. une fois qu'une ligne est supprimée, il faut que toutes lignes du dessous "remonte" afin qu'elle se colle (sinon le logiciel plante).

merci de votre aide :-D
Contenus similaires
28 Avril 2005 11:16:02

Plop, je ne suis pas sur que l'on puisse mettre de scalaires dans un sed mais bon.

Sinon tu pourrais test un truc dans le genre. Si vous sauriez gerez les open mieux que la je suis preneur!

  1. #!/usr/bin/perl -w
  2.  
  3. open(FILE, "< decoup.txt")
  4. or die ("prob a l'ouverture du fichier");
  5. @save = <FILE>;
  6. close(FILE);
  7. foreach (@save)
  8. {
  9. $_ = "" if ($_ =~ m/255.255.255.255/);
  10. chomp $_;
  11. }
  12. open(FILE, ">decoup.txt")
  13. or die ("prob a l'ouverture du fichier");
  14. foreach (@save)
  15. {
  16. print FILE $_."\n" if ($_);
  17. }
  18. close(FILE);
28 Avril 2005 11:20:24

ok mais je viens de voir sur commentcamarche.com que pour ouvrir un fichier en écriture (ce qui est le cas en l'occurence) il faut mettre devant le chemin du fichier >> :

  1. open(FILE, ">>decoup.txt")


enfin je vais essayé ce que tu m'as donné ;-)
28 Avril 2005 11:21:18

Non, ca ca va mettre tout ce que tu ecris a la fin.
Edit: donc ca ne supprimera pas les lignes non souhaitees
28 Avril 2005 11:25:55

CA MAAAAAAAAAAAARCHE !!!!!!!!!
Franchement t'as trop assuré AsMoDaiii ca commencais a me prendre la tete. MERCI MILLE FOIS !! :-D :-D
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS