У меня есть простой скрипт, который предполагает, чтобы найти текст, и если правильные условия соблюдены, он заменит текст:Powershell заменить дублируют результаты
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
Я только хочу, чтобы он создал один RECORD_IDENTIFIER.
У вас есть '$ line.replace (" â ‡ "," + ")', который выполняется для строки записи. Тогда ваш if будет также запускать идентификатор записи. Поскольку '$ line' по-прежнему' 'RECORD_IDENTIFIER:' – Matt
Хорошо, я пробовал примерно следующее: '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 } } ' .... но это тоже не работает. –