我有一个包含几千行文字的文件。我需要从中提取一些数据, 但我需要的数据是左边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个字符?
答案 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的回答是解决整体问题的首选方案