【问题标题】:Powershellv2 - remove last x characters from a stringPowershellv2 - 从字符串中删除最后 x 个字符
【发布时间】:2015-01-26 07:33:27
【问题描述】:

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

例如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 个字符?

【问题讨论】:

    标签: powershell substring powershell-2.0


    【解决方案1】:

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

    $text -replace ".{x}$"
    

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

    【讨论】:

    • 感谢您成为与非字符串值一起使用的与 powershell 相关的修剪命令。
    【解决方案2】:

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

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

    虽然这似乎与您给出的示例不完全一致,但它会为您提供不同的中间部分,即从开始的 57 个字符开始到结束的 37 个字符

    【讨论】:

    • 为此欢呼,简单但有效,正是我喜欢的方式。
    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-19
      • 2016-01-21
      • 2011-05-11
      • 2011-01-19
      • 2019-10-25
      相关资源
      最近更新 更多