Bonjour,
Je récupère en expect sur un équipement réseau sa configuration.
Voici un extrait du retour d'expect:
Histoire que ce soit propre et lisible, j'aimerais supprimer le début des lignes.^@^@^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
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):
Code : Sélectionner tout - Visualiser dans une fenêtre à part $line =~ s/^.+?\s+//g;
Le souci est que le mot INTERFACE a disparu. (quelques lignes comme ca n'ont pas d'espaces..)!// WIRELESS PROPERTIES CONFIGURATION //
!1
!Current Channel Bandwidth : 20 MHz
!Supported Channel Bandwidth : 5,10,20,40
!Auto Channel Selection : disable
!Current Configured Channel : 100
j'ai donc voulu remplacer le . par "tout ce qui n'est pas une lettre" et plus génériquement, un alphanumérique.
Le retour est pire, je n'ai tout simplement plus la ligne!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part $line =~ s/^\W+?\s+//g;
Avez-vous une idée pour améliorer cette regexp?!// WIRELESS PROPERTIES CONFIGURATION //
!Current Channel Bandwidth : 20 MHz
!Supported Channel Bandwidth : 5,10,20,40
!Auto Channel Selection : disable
!Current Configured Channel : 100
PS: j'ai le code suivant juste après ma ligne
Merci d'avance,
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");
Partager