Bonjour,

Je récupère en expect sur un équipement réseau sa configuration.

Voici un extrait du retour d'expect:
^@^@^M^@ // WIRELESS PROPERTIES CONFIGURATION //
^@^@^M^@
^@^@^M^@INTERFACE 1
^@^@^M^@
^@^@^M^@ Current Channel Bandwidth : 20 MHz
^@^@^M^@ Supported Channel Bandwidth : 5,10,20,40
^@^@^M^@ Auto Channel Selection : disable
^@^@^M^@ Current Configured Channel : 100
Histoire que ce soit propre et lisible, j'aimerais supprimer le début des lignes.

autant le ^M, pas de souci, autant le ^@ n'est pas reconnu. ni avec le caractère ^, ni @, ni "en couple" ^@. Je suis donc parti sur sur une suppression de tout ce qu'il y a avant le premier espace.

j'ai un début de regexp qui me convient presque:
ce qui me donne (le "!" est rajouté après):
!// WIRELESS PROPERTIES CONFIGURATION //
!1
!Current Channel Bandwidth : 20 MHz
!Supported Channel Bandwidth : 5,10,20,40
!Auto Channel Selection : disable
!Current Configured Channel : 100
Le souci est que le mot INTERFACE a disparu. (quelques lignes comme ca n'ont pas d'espaces..)

j'ai donc voulu remplacer le . par "tout ce qui n'est pas une lettre" et plus génériquement, un alphanumérique.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$line =~ s/^\W+?\s+//g;
Le retour est pire, je n'ai tout simplement plus la ligne!!
!// WIRELESS PROPERTIES CONFIGURATION //
!Current Channel Bandwidth : 20 MHz
!Supported Channel Bandwidth : 5,10,20,40
!Auto Channel Selection : disable
!Current Configured Channel : 100
Avez-vous une idée pour améliorer cette regexp?



PS: j'ai le code suivant juste après ma ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
# Ne conserver que les lignes non vides et commencant par certains
# caracteres (le reste ne contenant normalement pas d'information
# exploitable)
next if ($line =~ /(^[^a-z,0-9,\-,\/]|^space|^\s*$)/i);
 
push (@ret, "!$line");
Merci d'avance,