Powershellv2 - 从字符串中删除最后x个字符

时间:2014-11-27 16:27:44

标签: powershell substring powershell-v2.0

我有一个包含几千行文字的文件。我需要从中提取一些数据, 但我需要的数据是左边57个字符,最后37个字符。 我需要的位(中间)长度不一。

e.g。 20141126_this_piece_of_text_needs_to_be_removed<b>this_needs_to_be_kept</b>this_also_needs_to_be_removed

到目前为止,我有:

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

这摆脱了行开头的文本,但是我无法看到如何从最后删除文本。

我试过了:

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

但这些没有用

有没有办法摆脱最后的x个字符?

3 个答案:

答案 0 :(得分:23)

删除文本中的最后x个字符,请使用:

$text -replace ".{x}$"

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

答案 1 :(得分:8)

如果我理解正确,你需要这个:

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

虽然这似乎与你给出的例子完全一致,但它会给你不同的中间部分,即从开始的57个字符开始到结尾的37个字符

答案 2 :(得分:3)

这是从字符串中删除最后37个字符的方法:

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

但arco的回答是解决整体问题的首选方案