2017-07-07 82 views
2

我用下面REPLACE語句創建

$content | ForEach-Object { 

$addresseeName = $_.Substring(11,50)    
$example = 'X' * 50        
if ($_.Substring(0,10) -eq 'ADDRESSEE0')   
{ 
    $_ -replace $addresseeName, $example   

} 
else 
{ 
    $_ 
} 


$addresseeName2 = $_.Substring(62,50)   
$example = 'Y' * 50        
if ($_.Substring(0,10) -eq 'ADDRESSEE0')   
{ 
    $_ -replace $addresseeName2, $example  
} 
else 
{ 
    $_ 
} 

文本文件中的代碼之前重複行:

ABSINVEST2|Y|N|                                 
ADDRESSEE0|Name Name Letters Letters & Financial    |             |19 Greemount House   | 
ADDRSDETAS|             |             |        

文本文件後:

ABSINVEST2|Y|N|                                 
ADDRESSEE0|XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX|             |19 Greemount House    
ADDRESSEE0|Samp less Independent Examples & Exampless s  |XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX|19 Greemount House    
ADDRSDETAS|             |             |        

我試圖掩蓋特定領域(職位)。任何人都可以幫我解釋爲什麼每條IF Else聲明都會重複該行?

更新代碼,我被工作:

$content | 
    ForEach-Object { 

    $addresseeName = $_.Substring(11,50) 
    $addresseeName2 = $_.Substring(62,50) 
    $example = 'X' * 50 
    if ($_.Substring(0,10) -eq 'ADDRESSEE0')  


    { 
     $_.replace($addresseeName, $example).replace($addresseeName2, $example) 
    } 

回答

2

簡短的回答是,因爲要複製它(當前的腳本輸出兩次)。嘗試這個代替:

$content | ForEach-Object { 
    $addresseeName = $_.Substring(11,50)    
    $example = 'X' * 50        

    if ($_.Substring(0,10) -eq 'ADDRESSEE0')   
    { 
     $_ = $_ -replace $addresseeName, $example   

    } 

    $addresseeName2 = $_.Substring(62,50)   
    $example = 'Y' * 50        

    if ($_.Substring(0,10) -eq 'ADDRESSEE0')   
    { 
     $_ = $_ -replace $addresseeName2, $example  
    } 

    $_ 
} 

這通過執行替換時設置它,然後僅在最後輸出一次(它是否已經改變或不)修改當前行變量$_

+0

這似乎沒有工作。我通過使用以下內容獲得了我想要的內容。 $ addresseeName = $ _。Substring(11,50) $ addresseeName2 = $ _。Substring(62,50) $ example ='X'* 50 if($ _。Substring(0,10)-eq 'ADDRESSEE0')\t \t \t \t \t \t \t \t \t \t \t \t \t { \t $ _。更換($ addresseeName,$例子).replace($ addresseeName2,$例子)\t \t \t #replace Addresse名稱字段與示例(50個X) \t \t } 我將不得不這樣做的一些變量,所以試圖整理它有點與 – conye9980

+0

一起工作我看到,所以做兩個替換單個變量的方法。我不知道爲什麼我上面提出的建議沒有起作用,它應該這樣做,它只是使用一個變量來存儲變化,並一次性完成所有變化。我用你提供的文本對它進行了測試,並得到了你期望的結果。但是,嘿,很高興你的工作無論如何。 –

+0

我完全期望這是我做錯了哈。謝謝,我會用我工作的代碼更新原文。謝謝 – conye9980