Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Получить диапазон строк из файла, изменить текст по шаблону и перезап. файл с изм.

Ответить
Настройки темы
PowerShell - [решено] Получить диапазон строк из файла, изменить текст по шаблону и перезап. файл с изм.

Старожил


Сообщения: 286
Благодарности: 10

Профиль | Отправить PM | Цитировать


Изменения
Автор: 9119
Дата: 25-06-2021
Добрый.

нужно:
- получить дипазон строк из файла, строго по номеру* (начиная с 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) - должны остаться, чтобы после замены форматированный текст не был весь в одну строку.

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

Отправлено: 11:34, 25-06-2021

 

Старожил


Сообщения: 286
Благодарности: 10

Профиль | Отправить PM | Цитировать


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-строки и концом строки кода.

Последний раз редактировалось 9119, 25-06-2021 в 18:25.


Отправлено: 18:03, 25-06-2021 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


Вместо последних двух строчек
Код: Выделить весь код
$name, $url, $text | Out-File -Encoding utf8 -FilePath "$tmp1\result.txt"
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:10, 25-06-2021 | #3


Старожил


Сообщения: 286
Благодарности: 10

Профиль | Отправить PM | Цитировать


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:35.


Отправлено: 20:01, 25-06-2021 | #4


Старожил


Сообщения: 286
Благодарности: 10

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
"$name`n", "$url`n", $text | Out-File -Encoding utf8 -FilePath "$tmp1\result.txt"
вот так - как надо

Отправлено: 20:45, 25-06-2021 | #5


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


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

Отправлено: 09:15, 26-06-2021 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Получить диапазон строк из файла, изменить текст по шаблону и перезап. файл с изм.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Вопрос как из одного файла скопировать весь текст в другой файл ? turbolover Скриптовые языки администрирования Windows 6 26-08-2019 11:12
Любой язык - Выборка из текстового файла по шаблону DSU Скриптовые языки администрирования Windows 5 22-12-2018 15:53
CMD/BAT - Добавление строк по шаблону... adrobkov@vk Скриптовые языки администрирования Windows 4 03-09-2013 04:36
CMD/BAT - поиск строк по шаблону и запись в отдельный файл AVTS Скриптовые языки администрирования Windows 4 13-07-2012 00:51
CMD/BAT - [решено] Дописать текст из файла в файл GoldenSuslik2 Скриптовые языки администрирования Windows 1 13-06-2011 15:22




 
Переход