|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удаления строки ниже найденого текста. |
|
|
CMD/BAT - [решено] Удаления строки ниже найденого текста.
|
Новый участник Сообщения: 5 |
Друзья, всем привет. Обычно по bat много инфы и все мои задачи давно уже решались и я их с легкостью находил, но сейчас не смог найти решение. Помогите пожалуйста.
Есть текстовый файл вида. произвольный текст произвольный текст произвольный текст txt1 произвольный текст произвольный текст произвольный текст произвольный текст txt1 произвольный текст произвольный текст произвольный текст txt1 произвольный текст произвольный текст произвольный текст произвольный текст Где: произвольный текст - это различный текст, не повторяющийся текст. text1 - это текст который не изменяется. Задача, найти в текстовом файле текст "txt1" удалить строчку где находиться этот текст и строчку ниже. |
|
Отправлено: 10:45, 15-08-2019 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 11:08, 15-08-2019 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать Спасибо за быстрый ответ. Увы в файле есть информация которую не могу выложить. Но думаю Вы поймете вчем суть для примера прилагаю файл.
В файле 12 строк, в файле есть три строки где присутствует текст txt1 в строчках 5,7 и 11. Необходимо удалить эти строчки (5,7,11) и удалить строчки после них, строчки 6,8,12. Рабочий файл содержить почти 4000 строк. Текст по которому ищем строчки (text1) может расспологаться в различных строчках. Цитата Iska:
|
|
Отправлено: 13:01, 15-08-2019 | #3 |
Crazy Сообщения: 1227
|
Профиль | Отправить PM | Цитировать Цитата Grade24:
1. произвольный текст 2. произвольный текст txt1 произвольный текст 3. произвольный текст txt1 произвольный текст 4. произвольный текст Проверить маркер в строке №3 мы уже не можем, т.к. строка удалена... В сухом остатке: строку №4 удалять уже нельзя, т.к. не выполняются необходимые условия. А как должно быть? |
|
------- Отправлено: 13:58, 15-08-2019 | #4 |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
|
||
Отправлено: 14:03, 15-08-2019 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
![]() Цитата Grade24:
|
||
Отправлено: 14:37, 15-08-2019 | #6 |
Crazy Сообщения: 1227
|
Профиль | Отправить PM | Цитировать Цитата Grade24:
Примерно так: powershell $file = '.\in866.txt' $mrk = 'txt1' $enc = 'utf8' $a = gc $file -enc $enc|%{$flg1,$flg2=$false,$false}{ if($_ -match $mrk){ $flg1=$true $flg2=$true } elseif ($flg1 -and $flg2){ $flg2=$false } else { $_ $flg1=$false $flg2=$true } } $a|sc $file -enc $enc Цитата Iska:
Просто приходилось сталкиваться с подобной постановкой задачи, когда прилегающие, контекстные строки надо было учитывать... кстати, тот код ваял ещё на cmd и если хорошо поискать, то возможно даже он найдется... ![]() |
||
------- Последний раз редактировалось YuS_2, 15-08-2019 в 15:10. Отправлено: 15:01, 15-08-2019 | #7 |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать YuS_2,
Спасибо за код, увы не работает. Может что-то нетак делаю. Создал файл 123.bat, файл находиться в тойже папке что и файл in866.txt, запускай 123.bat, но нечего не меняется... Что я делаю нетак ? Пробовал в первой строчке прописать полный путь до файла in866.txt, не помогло. Цитата YuS_2:
Файл состоит из блоков строк, один блок - это две строки, между блоками нет пустых строк. У всех блоков произвольный, разный, не повторяющийся текст. Но есть блоки где первая строчка содержит текст txt1 эти блоки необходимо удалить, тоесть удалить первую и вторую строчку блока. |
|
Последний раз редактировалось Grade24, 15-08-2019 в 15:27. Отправлено: 15:20, 15-08-2019 | #8 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Grade24:
А на мои вопросы: Цитата Iska:
|
||
Отправлено: 15:45, 15-08-2019 | #9 |
Crazy Сообщения: 1227
|
Профиль | Отправить PM | Цитировать Цитата Grade24:
![]() То, что это не batch-сценарий, уже написали... В общем, скрипт необходимо сохранить в текстовом файле, с кодировкой UTF8 с BOM (это не единственная кодировка, но лучше в ней). Файл можно именовать как угодно, но расширение должно быть .ps1 Например: script.ps1 Далее, есть варианты... Скрипт можно запускать непосредственно из консоли powershell, либо ПКМ на файле скрипта и выбрать соответствующий пункт контекстного меню, либо создать batch-сценарий, например, run.bat: и запускать сценарий powershell уже этим пакетным файлом... В общем, выбор за Вами... |
|
------- Отправлено: 17:21, 15-08-2019 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBS/WSH/JS - Нужно написать скрипт на VBS для удаления строки. | X0E2003 | Скриптовые языки администрирования Windows | 1 | 18-02-2015 09:11 | |
CMD/BAT - [решено] Нужен Батник для удаления части строки | d_coder@vk | Скриптовые языки администрирования Windows | 1 | 18-03-2014 10:02 | |
Поиск строки текста в группе файлов | Serg2010 | AutoIt | 3 | 15-05-2013 06:29 | |
2003/XP/2000 - [решено] сбилась функция автоматического удаления выделенного текста клавишей BackSpace | myohoji | Microsoft Office (Word, Excel, Outlook и т.д.) | 3 | 19-11-2012 18:57 | |
2010 - Word, как сделать, чтобы "Отступ" ниже текста не перемещался вместе с шапкой? | HarrysFerrarievich | Microsoft Office (Word, Excel, Outlook и т.д.) | 9 | 31-10-2011 01:45 |
|