2017-07-07 87 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