Как заменить многострочный текст в нескольких файлах с помощью powershell - PullRequest
0 голосов
/ 13 октября 2019

Я не могу заменить многострочные тексты вообще или другими словами, объединяя их в одну строку. Вот пример для файла c: \ me \ testes.text и его содержимое выглядит следующим образом:

<error.error1>
<error.rec2>
<error.short3>
<error.error4>
<error.rec5>
<error.short6>

Мои исключения: Я хочу объединить или заменить каждые первые 3 строки наодна строка в нескольких файлах:

<error.error1> <error.rec2> <error.short3>
<error.error4> <error.rec5> <error.short6>

Я могу объединить каждые первые 2 строки, но здесь их 3 строки.

Пожалуйста, помогите, MJ

1 Ответ

1 голос
/ 13 октября 2019

Используйте Get-Content, чтобы прочитать файл 3 строки за раз, указав параметр -ReadCount, перенаправьте эти 3 строки в ForEach-Object и соедините их вместе.

Get-Content "c:\me\testes.text" -ReadCount 3 | ForEach-Object {
    $_ -join ' '
}

Вывод будет выглядеть следующим образом:

<error.error1> <error.rec2> <error.short3>
<error.error4> <error.rec5> <error.short6>

Чтобы прочитать несколько файлов, по 3 строки за раз вы можете передать из Get-ChildItem в цикл, а затем извлечь содержимое из файла перед тем, как соединить его обратно и записать обратно в соответствующий файл. файл.

Get-ChildItem -Path c:\me\testes\* -Filter *txt | ForEach-Object {
    (Get-Content -LiteralPath $_.FullName -ReadCount 3) | ForEach-Object {
        $_ -join ''
    } | Set-Content -LiteralPath $_.FullName
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...