Question
un beau challenge !
- jojo
- Auteur du sujet
- Hors Ligne
- Membre elite
- Messages : 187
- Remerciements reçus 0
alors ce challenge consiste à créer une fonction qui permet de colorer les chaînes matcher par une expression régulière, la fonction doit accepter l'entrée par le pipeline, doit accepter aux moins 5 paramètres:
* file: nom du fichier à traiter (parametersetname='file')
* inputobject: chaine de caractère (parametersetname='input')
*pattern: expression régulère
*color: couleur de la chaîne matcher
* AllMatches: Recherche plusieurs correspondances dans chaque ligne de texte. Sans ce paramètre, on recherche uniquement la première correspondance dans chaque ligne de texte.
qui aurra le courage de relever le défi
Connexion ou Créer un compte pour participer à la conversation.
- SiSMik
- Hors Ligne
- Membre platinium
- Messages : 492
- Remerciements reçus 0
Colorer une chaine ? OK mais la colorer dans quoi ? un fichier ? le shell ? c'est pas très précis
Allmatches, cet argument peut être définit dans une expression régulière... donc inutile dans cette fonction .
Je pense pas que la place de ce post soit dans la partie débutants au passage, surtout à cause des expression régulière ^^
[code:1]if ($var -match $regex) {
Write-host avec couleur de $matches
}[/code:1]
Dans l'idée y'a rien de très compliqué, enfin je peux me tromper.. comme souvent ^^
@+
Connexion ou Créer un compte pour participer à la conversation.
- jojo
- Auteur du sujet
- Hors Ligne
- Membre elite
- Messages : 187
- Remerciements reçus 0
Pas trop compris le but de la manoeuvre...
Colorer une chaine ? OK mais la colorer dans quoi ? un fichier ? le shell ? c'est pas très précis
Allmatches, cet argument peut être définit dans une expression régulière... donc inutile dans cette fonction .
Je pense pas que la place de ce post soit dans la partie débutants au passage, surtout à cause des expression régulière ^^
[code:1]if ($var -match $regex) {
Write-host avec couleur de $matches
}[/code:1]
Dans l'idée y'a rien de très compliqué, enfin je peux me tromper.. comme souvent ^^
@+
hello benduru
le but est de colorer seulement la partie matcher dans le shell:
par exemple on à une chaine contenant:
[code:1]$chaine = 'update xxx 1/2/02 kb75454 xxxx kb74418 kkk'[/code:1]
et un regex:
[code:1]
$regex = 'kb\d{5}'[/code:1]
la ligne de commande suivante:
[code:1]get-matches $chaine $regex -all -color green[/code:1]
va récrire la chaîne $chaine dans le shell mais va colorer kb75454 et kb74418 en bleu
c'est une sorte d'un outil visuel pour qu'on tests nos Regex<br><br>Message édité par: jojo, à: 28/09/12 13:34
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
- Messages : 6300
- Remerciements reçus 68
Un exemple :
www.leeholmes.com/blog/2008/02/12/realti...-powershell-console/
Une autre difficulté gérer le curseur
Une approche basée cmdlet :
stackoverflow.com/questions/7362097/colo...-format-table-output
En revanche pour les performances...
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
- Messages : 6300
- Remerciements reçus 68
[code:1]
$s=\"!PowerShell n'a pas d'opérateur Power, donc peu de 'Power'\"
$regex=\"Power\"
$Grp=[regex]::Matches($s,$regex)
$grp
$ViewRegex={
$Bc=$Host.UI.RawUI.NewBufferCellArray(@($s),
$host.ui.RawUI.ForegroundColor,
$host.ui.RawUI.BackgroundColor)
$curseur=0
$CursorPos=[console]::CursorTop+1
$pos= New-Object System.Management.Automation.Host.Coordinates($Curseur,$CursorPos)
$Host.UI.RawUI.SetBufferContents( $Pos, $BC)
$grp| foreach {
$Groupe=$_
$Bc=$Host.UI.RawUI.NewBufferCellArray(@($Groupe.Value),
$host.PrivateData.ProgressForegroundColor,
$host.PrivateData.ProgressBackgroundColor)
$pos= New-Object System.Management.Automation.Host.Coordinates($Groupe.Index,$CursorPos)
$Host.UI.RawUI.SetBufferContents( $Pos, $BC)
}
}
cls;&$ViewRegex
$s=\"RIRIfifiloulou\"
$regex=\"RIRI|fifi|loulou\"
$Grp=[regex]::Matches($s,$regex)
cls;&$ViewRegex
$s=\"RIRI a deux fréres fifi et loulou\"
$regex=\"RIRI|fifi|loulou\"
$Grp=[regex]::Matches($s,$regex)
cls;&$ViewRegex
[/code:1]
Vue les possibilités des regex, multilignes notamment, je te laisse étudier le sujet <br><br>Message édité par: Laurent Dardenne, à: 28/09/12 20:31
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- jojo
- Auteur du sujet
- Hors Ligne
- Membre elite
- Messages : 187
- Remerciements reçus 0
Voici \"un truc\", qui n'est ni une ébauche ni une solution :
[code:1]
$s=\"!PowerShell n'a pas d'opérateur Power, donc peu de 'Power'\"
$regex=\"Power\"
$Grp=[regex]::Matches($s,$regex)
$grp
$ViewRegex={
$Bc=$Host.UI.RawUI.NewBufferCellArray(@($s),
$host.ui.RawUI.ForegroundColor,
$host.ui.RawUI.BackgroundColor)
$curseur=0
$CursorPos=[console]::CursorTop+1
$pos= New-Object System.Management.Automation.Host.Coordinates($Curseur,$CursorPos)
$Host.UI.RawUI.SetBufferContents( $Pos, $BC)
$grp| foreach {
$Groupe=$_
$Bc=$Host.UI.RawUI.NewBufferCellArray(@($Groupe.Value),
$host.PrivateData.ProgressForegroundColor,
$host.PrivateData.ProgressBackgroundColor)
$pos= New-Object System.Management.Automation.Host.Coordinates($Groupe.Index,$CursorPos)
$Host.UI.RawUI.SetBufferContents( $Pos, $BC)
}
}
cls;&$ViewRegex
$s=\"RIRIfifiloulou\"
$regex=\"RIRI|fifi|loulou\"
$Grp=[regex]::Matches($s,$regex)
cls;&$ViewRegex
$s=\"RIRI a deux fréres fifi et loulou\"
$regex=\"RIRI|fifi|loulou\"
$Grp=[regex]::Matches($s,$regex)
cls;&$ViewRegex
[/code:1]
Vue les possibilités des regex, multilignes notamment, je te laisse étudier le sujet <br><br>Message édité par: Laurent Dardenne, à: 28/09/12 20:31
hello Laurent
désolé pour le retard et merci pour le bijoux
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- un beau challenge !