2014-11-27 22 views
5

Birkaç bin satırlık metin içeren bir dosyam var. Ondan bazı verileri çıkarmam gerekiyor, ama ihtiyacım olan veriler her zaman soldan 57 karakter ve sondan 37 karakter. İhtiyacım olan bit (ortada) değişken uzunluktadır.Powershellv2 - Bir dizeden son x karakteri kaldırın

örn. 20141126_this_piece_of_text_needs_to_be_removed<b>this_needs_to_be_kept</b>this_also_needs_to_be_removed

Şimdiye kadar var:

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

Bu satırın başında metnin kurtulur ama ucundan metnin kurtulmak için nasıl göremez.

Denedim:

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

ancak bu son x karakterlerden kurtulmak için bir yol var mı

işe yaramadı?

cevap

6

için tercih edilen çözüm, buna ihtiyacın Bu olsa

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

verdiğin örnek uyumlu çalışarak görünmüyor ama sta 57 karakter başlayan size değişen orta bölüm yani verecektir rt ve sonunda

+0

alkış o basit ama etkili, sadece yol ı için Beğen – IGGt

1

Bu dizesinden son 37 karakterleri kaldırmak için yapılması gerekenler:

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

ama arco's cevap ben doğru anlamak genel sorun

17

gelen biten 37 karakter metin, kullanımda Son x karakter kaldırmak için:

$text -replace ".{x}$" 

yani

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

Dize olmayan değerler ile çalışan tek powershell ile ilgili trim komutu olduğunuz için TEŞEKKÜR EDERİZ. – seagull

İlgili konular