Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Получить диапазон строк из файла, изменить текст по шаблону и перезап. файл с изм. (http://forum.oszone.net/showthread.php?t=349075)

9119 25-06-2021 11:34 2960854

Получить диапазон строк из файла, изменить текст по шаблону и перезап. файл с изм.
 
Добрый.

нужно:
- получить дипазон строк из файла, строго по номеру* (начиная с 5 и до 1000)
* значение в этом диапазоне постоянно меняются
- форматировать полученный текст (это уже в коде есть)
- положить форматированный текст в первоначальный файл по тем же координатам откуда брали изначально (начиная с 5 и до 1000)


пробовал так:
Код:

$content = (get-content -encoding utf8 -path "выкладка.txt")[4..1000]
$format_text = $content -replace "<..>", "" -replace "<...>", "" -replace '<', "" -replace '>', ""
(get-content -encoding utf8 -path "выкладка.txt")[0..1000] -replace "$content", "$format_text"

не работает (не заменяет текст на форматированный)

пример входящего txt:
Код:

Строка1 *всегда разная
Строка2 *всегда пустая
Строка3 *всегда разная
Строка4 *всегда пустая
Какой-то текст <><...><..>
еще текст

какой-то текст

какой-то текст

пример желаемого txt:
Код:

Строка1
Строка2
Строка3
Строка4
Какой-то текст
еще текст

какой-то текст

какой-то текст

*** пустые строки, перенос строк (если они есть) в указанном дипазоне (от 5 до 1000) - должны остаться, чтобы после замены форматированный текст не был весь в одну строку.

Помогите с кодом пожалуйста.

9119 25-06-2021 18:03 2960890

upd.

Впринципе подошел с другой стороны:
Код:

$name = (get-content -encoding utf8 -path "$tmp1\выкладка.txt")[0]
$url = (get-content -encoding utf8 -path "$tmp1\выкладка.txt")[2]
$text = (get-content -encoding utf8 -path "$tmp1\выкладка.txt")[4..1000] -replace "<...>", "" -replace "<..>", "" -replace "<", "" -replace ">", ""
New-Item -Path "$tmp1\выкладка.txt" -ItemType file -force
add-content -path "$tmp1\выкладка.txt" "$name`n`n$url`n`n$text" -encoding utf8

И все бы ничего, но $text вставляется одной строкой, хотя в самой переменной - текст с наличием пустых строк и т.д
Как это исправить?


here-string не могу использовать, т.к бывают знаки которые не поддерживаются.
Код:

Этот знак не допускается между заголовком here-строки и концом строки кода.

Elven 25-06-2021 19:10 2960900

Вместо последних двух строчек
Код:

$name, $url, $text | Out-File -Encoding utf8 -FilePath "$tmp1\result.txt"

9119 25-06-2021 20:01 2960908

Elven,
текст вывелся как надо.
но теперь между строками нет пустых.
`n была не просто так.

сейчас получили
Код:

строка1
строка2
строка3

без пустых строк между, а они нужны.


upd. получилось.
Код:

$name, "`n", $url, "`n", $text | Out-File -Encoding utf8 -FilePath "$tmp1\result.txt"

правда теперь почему-то делает по 2 пустых строки) а надо по одной)

9119 25-06-2021 20:45 2960911

Код:

"$name`n", "$url`n", $text | Out-File -Encoding utf8 -FilePath "$tmp1\result.txt"
вот так - как надо

Iska 26-06-2021 09:15 2960939

9119, вообще, на будущее, везде, где Вы пишете про некий файл с неким содержимым — всегда выкладывайте упакованный в архив образец этого файла.


Время: 16:07.

Время: 16:07.
© OSzone.net 2001-