web-dev-qa-db-fra.com

Powershellv2 - supprime les derniers x caractères d'une chaîne

J'ai un fichier contenant quelques milliers de lignes de texte. J'ai besoin d'extraire des données de celui-ci, mais les données dont j'ai besoin sont toujours 57 caractères à gauche et 37 caractères à la fin. Le bit dont j'ai besoin (au milieu) est de longueur variable.

par exemple. 20141126_this_piece_of_text_needs_to_be_removed<b>this_needs_to_be_kept</b>this_also_needs_to_be_removed

Jusqu'à présent, j'ai:

SELECT-STRING -path path_to_logfile.log -pattern "20141126.*<b>" | 
FOREACH{$_.Line} | 
FOREACH{
    $_.substring(57)
    }

Cela supprime le texte au début de la ligne, mais je ne vois pas comment supprimer le texte à la fin.

J'ai essayé:

$_.subString(0,-37)
$_.subString(-37)

mais cela n'a pas fonctionné

Existe-t-il un moyen de se débarrasser des x derniers caractères?

11
IGGt

Si je vous comprends bien, vous en aurez besoin:

$_.substring(57,$_.length-57-37)

Bien que cela ne semble pas fonctionner précisément avec l'exemple que vous avez donné, cela vous donnera la section centrale variable, c'est-à-dire commençant à 57 caractères depuis le début et finissant à 37 caractères à la fin

9
arco444

pour supprimer les derniers x caractères d'un texte, utilisez:

$text -replace ".{x}$"

c'est à dire

PS>$text= "this is a number 1234"
PS>$text -replace ".{5}$" #drop last 5 chars
this is a number
32
Rudolph

Voici comment supprimer les 37 derniers caractères de votre chaîne:

$_.subString(0,$_.length-37)

mais la réponse d’Arco est la solution préférée à votre problème global

4
Paul