Bonjour,

On m'a donné un fichier texte sous le format ci-après pour en faire un fichier csv avec séparateur ";" en remplaçant les symboles
\s
<->
->
:

udp 10.63.29.130:59773->10.63.10.4:8040 0/1 48
udp 10.63.29.130:42114->10.63.10.4:8040 0/1 24
tcp 10.63.29.30:2591<->10.69.25.204:49192 97434/94677 120
tcp 10.63.29.130:5666<->10.222.65.130:35023 9/8 24
tcp 10.242.254.63:telnet<->10.252.16.215:59111 29/30 30
udp 10.63.29.130:57000->10.63.10.4:8040 0/1 36
tcp 10.63.29.30:10001<->10.239.8.17:60683 2153/2210 120
tcp 10.63.29.30:2591<->10.239.8.17:60677 2/1 6
..............................

J'ai fait ca qui fonctionne

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
my @input = @ARGV;
 
foreach my $fichier (@input) {
 
open my $fh, '<', "$fichier";
open my $didierCSV , '>' , "didier.csv";
 
 
while (my $ligne = <$fh>) {
 
$ligne =~ s/\s/;/g;
$ligne =~ s/\</;/g;
$ligne =~ s/\-+/;/g;
$ligne =~ s/\>+/;/g;
$ligne =~ s/\:+/;/g;
$ligne =~ s/\;+/;/g;
 
print "$ligne\n";
 
print $didierCSV "$ligne\n";
}
 
close $fichier;
close $didierCSV;
}

Mais je n'arrive pas à indiquer de multiple possibilités (pas de OU, ET) avec les symbols <-> vu comme une seule pièce par exemple d'ou le fait de passer par x lignes de substitutions
$ligne =~ s/\s/;/g;
$ligne =~ s/\</;/g;
$ligne =~ s/\-+/;/g;
$ligne =~ s/\>+/;/g;
$ligne =~ s/\:+/;/g;
$ligne =~ s/\;+/;/g;
La dernière étant pour éviter d'avoir ;;; à la place de <->

Merci