Copier un fichier tout en supprimant des lignes

Fermé
Bulld0 Messages postés 4 Date d'inscription jeudi 15 octobre 2015 Statut Membre Dernière intervention 16 octobre 2015 - Modifié par Bulld0 le 15/10/2015 à 16:09
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 20 oct. 2015 à 13:39
Bonjour à vous!

Je suis débutant en langage de programmation "Perl" et je voudrais savoir si quelqu'un sait comment, dans un script, je peux copier un fichier et son contenu mais en enlevant par la meme occasion des lignes présentes dans ce fichier qui sont comprisent entre deux phrases ?

Par exemple : je souhaite copier le fichier toto.conf ailleurs tout en supprimant les lignes comprises entre les mot BEGIN et END.

J'ai essaye avec la commande sed '/BEGIN/, /END/d' toto.conf mais ca ne fonctionne pas ! Help ! :)
Et ce qu'il me faut, c'est une suppresion et une sauvegarde du nouveau fichier (sans les lignes en gros)

Merci beaucoup de votre aide
A voir également:

1 réponse

[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié par [Dal] le 20/10/2015 à 13:40
Salut Bulld0,

Avec Perl, tu peux utiliser les modificateurs m et s pour traiter le contenu de la regexp comme matchant de multiples lignes sur une seule et matcher BEGIN et END et les caractères de début et fin de lignes sur lesquelles ils sont autant de fois que nécessaire pour faire tes substitutions.

Par exemple, comme cela :

#!/usr/bin/perl

use strict;
use warnings;

my $st = <<EOT;
Bonjour à vous!
BEGIN
Je suis débutant en langage de programmation "Perl" et je voudrais savoir si quelqu'un sait comment, dans un script, je peux copier un fichier et son contenu mais en enlevant par la meme occasion des lignes présentes dans ce fichier qui sont comprisent entre deux phrases ?
END
Par exemple : je souhaite copier le fichier toto.conf ailleurs tout en supprimant les lignes comprises entre les mot BEGIN et END.
BEGIN
J'ai essaye avec la commande sed '/BEGIN/, /END/d' toto.conf mais ca ne fonctionne pas ! Help ! :)
Et ce qu'il me faut, c'est une suppresion et une sauvegarde du nouveau fichier (sans les lignes en gros)
END
Merci beaucoup de votre aide
EOT
;

while ($st =~ m/(.*?)(^BEGIN.*?^END$)(.*)/msg) {
    $st = $1 . $3;
}
print "$st";


Dal
0