SelectEtoile : Base de connaissance SGBD

Gestion des chaines de caracteres sous Powershell

1

Cet article donne des exemples pratiques de la manipulation des chaines de caracteres sous Powershell.

Je viens du monde Unix et j'ai évidemment souvent utilisé les commandes awk, grep, sed et j'en passe et des meilleures !!!!

Sous powershell, on peut faire aussi beaucoup de chose.

 

L'article sera un peu light au début...je débute. Par contre, n'hésitez pas à ajouter des commentaires sur ce sujet, je suis preneur !!

 

Problème 1 - j'ai une série de fichiers de sauvegarde de base de données dans un repertoire. Le nom de ces fichiers contient le nom d'une base de données, la date du backup. Je dois extraire pour une base données, la liste des date disponible au format 'YYYY/MM/DD hh:mm:ss' :

Listing de mes fichiers en fonction de la base (ici : mabase)

get-childitem Myfolder -recurse | where {$_.Name -match "mabase"}

 

Résultats :

    Directory: myfolder


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-----          6/3/2014   9:01 PM    3236352 mabase.20140603_210132.dmp
-----          6/4/2014   9:01 PM    3236352 mabase.20140604_210131.dmp

 

Extraction de la date en format brut :

 

$table=get-childitem Myfolder -recurse | where {$_.Name -match "mabase"}

# Format Brut

foreach ($row in $table){$fic=$row.Name -split "\.";$fic[1]}

20140603_210132
20140604_210131

# Format cible

foreach ($row in $table){$fic=$row.Name -split "\.";$fic[1] -replace '^([0-9][0-9][0-9][0-9])([0-9][0-9])([0-9][0-9])_([0-9][0-9])([0-9][0-9])([0-9][0-9])' , '$1/$2/$3 $4:$5:$6'}

2014/06/03 21:01:32
2014/06/04 21:01:31

 

C'est cool , non ? cet article ne contiendra que ce genre de problème.
 

 

Remplacer et/ou supprimer les '0' d'une variable

PS P:\> '010.012.000.101' -replace '\b0+\B'
10.12.0.101


 

 

 Traitement de texte / variable sur des fichiers et répertoire

dir C:\batches\logs -I *20140403_22*.log -R | Select-String fail -list | % { notepad $_.path }

permet d'ouvrir les fichiers contenant le mot 'fail' avec notepad.

 

Lister les fichiers contenant 2 chiffres et ayant une longueur max de 8 caractères

 

Get-ChildItem -Path $env:windir -Recurse -ErrorAction SilentlyContinue |
  Where-Object { $_.BaseName -match '\d{2}' -and $_.Name.Length -le 8 }

 

 

 

 

 

Ajouter un Commentaire


Code de sécurité
Rafraîchir