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
Partager