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?
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
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
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