2017-02-15 14 views
0

私はテキストを検索すると、右の条件が満たされた場合、それはテキスト置換すると仮定される簡単なスクリプト持っている:は、複製の結果

foreach ($line in $file){ 
$line.replace("â‡","+") | Out-File -FilePath $destination -Append 
if ($line -eq "â‡RECORD_IDENTIFIER:"){ 
    $line.replace("â‡RECORD_IDENTIFIER:","+RECORD_IDENTIFIER: A") | Out-File -FilePath $destination -Append 
} 
if ($line -eq "â‡END_TAG"){ 
    $line.replace("â‡END_TAG","+END_TAG;") | Out-File -FilePath $destination -Append 
} 

をが、結果はこれです:

+START_TAG: 
+DATA_FILE_(DATE/TIME):2017-02-13T13:44:44.489-08:00 
+RECORD_IDENTIFIER: 
+RECORD_IDENTIFIER: A 
+CLIENT_NUM:8802 
+SOLOMON_ID:TRUG01 

私は1つのRECORD_IDENTIFIERを生成したいだけです。

+0

レコード行には '$ line.replace("â "、" + ")'があります。あなたのifはレコード識別子のためにも発火します。 '$ line'はまだ' 'RECORD_IDENTIFIER: – Matt

+0

なので、このような試みをしました: ' foreach($ line in $ file){ $ line.replace( "â‡"、 "+") |アウトファイル-FilePath $ destination -Append if($ line -eq "+ RECORD_IDENTIFIER:"){ $ line.replace( "+ RECORD_IDENTIFIER:"、 "+ RECORD_IDENTIFIER:A")|アウトファイル-FilePath $ destination -Append } if($ line -eq "+ END_TAG"){ $ line.replace( "+ END_TAG"、 "+ END_TAG;")| Out-File -FilePath $ destination -Append } } ' ....でも、どちらも動作しません。 ( "青" 置き換える スイッチ($ TESTFILE){ 「青」{$ _、:。このコードを使用して blue orange yellow : –

答えて

3

これは、Switchオペレータを検出する必要がある場所です。私はそれが演算子だと思う、おそらくコマンドレットですか?それが何であれ、それはあなたが必要とするものです!それは、コレクションの現在の反復を複数のケースと比較し、一致するケースを適用することです。たとえば:

Switch ($file) { 

    "â‡RECORD_IDENTIFIER:" { 
     $_.Replace("â‡RECORD_IDENTIFIER:", "+RECORD_IDENTIFIER: A") | 
      Out-File -FilePath $destination -Append 
     Continue 
    } 

    "â‡END_TAG" { 
     $_.Replace("â‡END_TAG", "+END_TAG;") | 
      Out-File -FilePath $destination -Append 
     Continue 
    } 

    default { 
     $_.Replace("â‡", "+") | 
      Out-File -FilePath $destination -Append 
    } 

} 

Continueコマンドは、次の項目に移動するループを言うので、それはそれがどうなる最初のケースと一致する場合は、あなた、それはファイルへの出力を交換して、次の行に移動します。最初のケースと一致しない場合は2番目のケースを試行し、一致する場合はそれを置換してファイルに出力し、次の行に移動します。最初の2つのケースのどちらにも一致しない場合は、defaultラインに達し、そのすべてにscriptblockが適用されるため、最初の2つのケースと一致しなかったものはreplace("â‡","+")が実行され、ファイルに出力されます。

+0

は、この方法では、私のようなテキストファイルを作成し、単純なテキストファイルのために完璧に働いていました"グリーン")|アウトファイル-FilePath "\\ a1-gcs-snf-001 \ DataFeeds \ TrueGreen \ test_modified.txt" -Append;続行} デフォルト{$ _ |アウトファイル - ファイルパス "\\ a1-gcs-snf-001 \ DataFeeds \ TrueGreen \ test_modified.txt" -Append} } 「青」を「緑」に変更しても問題ありません。 私の大きなテキストファイルのためにそれを実行すると、置き換えられたものはどれも動作していないようです。 –

+0

私はそれが働くようになった!私がペーストしたものをコピーすると、ユニコードで何か変わったことがあった...ありがとう! –

関連する問題