2015-01-05 3 views
0

Я пытаюсь разделить каждую строку в текстовом файле и вывод всех текста за пределы разделения (на текст «TransactResponse») в другой файл (ref.txt):разбить строку на каждой строке файла

Get-Content C:\Users\Desktop\batches\XpRef\System.*.log | ForEach-Object -Process { $ split("TransactResponse")[1], "multiline" } | Out-File -FilePath C:\Users\Desktop\batches\XpRef\ref.txt 

При запуске этого сценария не выводится текст в выходной файл.

+3

внутри цикла foreach вы ссылаетесь на текущий элемент с '$ _', но в вашем коде вы используете' '' (без подчеркивания). У вас также есть ошибка в * split *: вам нужно будет использовать -split (путь powershell) или .split (.net way) –

ответ

0

Смотрите мой комментарий выше. код образца:

$s=gc C:\temp\t.txt 
$s -split 'TransactResponse' | where {$_} 

(где положение будет фильтровать пустые строки)

+0

Спасибо Kayasax, обе версии (если я добавлю [1] к 'TransactResponse' вашего второго версия) теперь выводит то, что кажется тем же самым текстом, но это не весь текст после «TransactResponse», а скорее беспорядок строк. – userzac

+0

Спасибо, mjolinor, ваша версия отлично работает! – userzac

0

Я бы сделать это так:

Get-Content C:\Users\Desktop\batches\XpRef\System.*.log -ReadCount 1000 | 
ForEach-Object { 
$_ -Match 'TransactResponse' -replace '.*TransactResponse(.+)','$1' | 
Add-Content C:\Users\Desktop\batches\XpRef\ref.txt } 

Вы можете опустить -Match 'TransactResponse', если все строки содержат эта строка.

Смежные вопросы