CMD/BAT - [решено] Парсер строк TXT файла
-
Flayer
CMD/BAT - [решено] Парсер строк TXT файла
Цитата:
Меня трудно приручить
Не легко остановить
Можно понять
Со мной можно дружить
Приятно общаться
Невозможно забыть
Я вас не заставляю
Взят текст в пример. Как сохранить вторую и третью строчку по словам в *.тхт файл? Буду благодарен за помощь.
Меня трудно приручить
Не легко остановить
Можно понять
Со мной можно дружить
Приятно общаться
Невозможно забыть
Я вас не заставляю
Взят текст в пример. Как сохранить вторую и третью строчку по словам в *.тхт файл? Буду благодарен за помощь.
-
Guest
Re: CMD/BAT - [решено] Парсер строк TXT файла
Уточните задание, вам нужно сохранить именно вторую и третью строки любого txt-файла, или строки, в которых есть заданные слова?
-
Guest
Re: CMD/BAT - [решено] Парсер строк TXT файла
Anonymоus, по заданным словам.
P.S. Если не затруднит, можно еще пример, как по заданным словам удалить строки?
P.S. Если не затруднит, можно еще пример, как по заданным словам удалить строки?
-
Flayer
Re: CMD/BAT - [решено] Парсер строк TXT файла
Цитата Flayer:
Anonymоus, по заданным словам.
Flayer, по приведённому примеру исходного файла, дайте пример заданных слов и пример получаемого конечного файла.
Anonymоus, по заданным словам.
CMD/BAT - [решено] Парсер строк TXT файла
Flayer, по приведённому примеру исходного файла, дайте пример заданных слов и пример получаемого конечного файла.
-
Flayer
Re: CMD/BAT - [решено] Парсер строк TXT файла
Примерно такого вида, взял три слова.
Пример слов:
Цитата:
легко, понять, общаться
Конечный результат:
Цитата:
Не легко остановить
Можно понять
Приятно общаться
Сохранить в текстовый файл.
Пример слов:
Цитата:
легко, понять, общаться
Конечный результат:
Цитата:
Не легко остановить
Можно понять
Приятно общаться
Сохранить в текстовый файл.
-
Iska
Re: CMD/BAT - [решено] Парсер строк TXT файла
Flayer, ага. Теперь ясно.
Пусть «0001.txt» — исходный файл:
Код:
«0002.txt» — файл, содержащий целевые слова:
Код:
Тогда:
Код:
даст в файле «0003.txt» следующий результат:
Цитата:
Код:
Flayer, это оно?
Для удаления (точнее, для фильтрации строк, не содержащих целевых слов) — добавить параметр «/v»:
Код:
Цитата:
Код:
Пусть «0001.txt» — исходный файл:
Код:
Код: Выделить всё
Меня трудно приручить
Не легко остановить
Можно понять
Со мной можно дружить
Приятно общаться
Невозможно забыть
Я вас не заставляю«0002.txt» — файл, содержащий целевые слова:
Код:
Код: Выделить всё
легко
понятьТогда:
Код:
Код: Выделить всё
findstr.exe /i /g:0002.txt 0001.txt >0003.txtдаст в файле «0003.txt» следующий результат:
Цитата:
Код:
Код: Выделить всё
Не легко остановить
Можно понятьFlayer, это оно?
Для удаления (точнее, для фильтрации строк, не содержащих целевых слов) — добавить параметр «/v»:
Код:
Код: Выделить всё
findstr.exe /v /i /g:0002.txt 0001.txt >0004.txtЦитата:
Код:
Код: Выделить всё
Меня трудно приручить
Со мной можно дружить
Приятно общаться
Невозможно забыть
Я вас не заставляю-
Flayer
Re: CMD/BAT - [решено] Парсер строк TXT файла
Iska, не оно.
Не из файла слова брать, через переменную set.
Не из файла слова брать, через переменную set.
-
Flayer
Re: CMD/BAT - [решено] Парсер строк TXT файла
Flayer, вот вариант для выделения строк, содержащих заданные слова
Код:
А вот для строк, НЕ содержащих ни одно из заданных слов
Код:
Не забудьте, что и скрипт, и файл с нужными строками, должны быть сохранены в кодировке DOS 866, если вы планируете работать с кириллицей. Файл с результатом создатся в той же кодировке.
Хотя не пойму, чем вам не угодил вариант Iska с файлом - важен ведь результат, а не метод.
Код:
Код: Выделить всё
@Echo Off
:: Текстовый файл (и батник, и файл должны быть в одной кодировке - 1251 или 866)
Set File=file.txt
:: Слова для поиска
Set Words=легко,понять,общаться
:Loop
For /F "tokens=1,* delims=," %%A In ("%Words%") Do (
If "%%A"=="" (Exit)
Findstr /I "%%A" %file%>>out_%file%
Set Words=%%B
GoTo Loop
)А вот для строк, НЕ содержащих ни одно из заданных слов
Код:
Код: Выделить всё
@Echo Off
SetLocal EnableDelayedExpansion
:: Текстовый файл (и батник, и файл должны быть в одной кодировке - 1251 или 866)
Set File=file.txt
:: Слова, которые НЕ должны содержаться в генерируемом файле
Set Words=легко,понять,общаться
Set TotalWords=1
Call :Check
For /F "tokens=*" %%S In (%File%) Do (
Set ContainWords=false
Set String=%%S
For /L %%A In (1,1,%TotalWords%) Do (
Echo !String!|Findstr "!Word%%A!">nul&& Set ContainWords=true
)
If !ContainWords!==false (Echo %%S>>out_%File%)
)
Exit
:Check
For /F "tokens=1,* delims=," %%A In ("%Words%") Do (
If "%%A"=="" (Exit /B)
Set /A TotalWords+=1
Set Word%TotalWords%=%%A
Set Words=%%B
GoTo Check
)
Set /A TotalWords-=1
Exit /BНе забудьте, что и скрипт, и файл с нужными строками, должны быть сохранены в кодировке DOS 866, если вы планируете работать с кириллицей. Файл с результатом создатся в той же кодировке.
Хотя не пойму, чем вам не угодил вариант Iska с файлом - важен ведь результат, а не метод.
-
Flayer
Re: CMD/BAT - [решено] Парсер строк TXT файла
Anonymоus, спасибо. Еще такой вопрос, с первым кодом только почему-то сохраняются две строки.
Цитата:
Не легко остановить
Можно понять
В коде слово укоротил:
Цитата:
Set Words=легко,понять,аться
Тогда все три строки.
Цитата:
Не легко остановить
Можно понять
Приятно общаться
Пробовал с другим текстом, тоже самое, какое слово полностью можно оставить, какое нужно урезать. В чем может быть дело?
Цитата:
Не легко остановить
Можно понять
В коде слово укоротил:
Цитата:
Set Words=легко,понять,аться
Тогда все три строки.
Цитата:
Не легко остановить
Можно понять
Приятно общаться
Пробовал с другим текстом, тоже самое, какое слово полностью можно оставить, какое нужно урезать. В чем может быть дело?
-
Guest
Re: CMD/BAT - [решено] Парсер строк TXT файла
Flayer, я же специально указал, сохраняйте в кодировке 866 и текст, и скрипт. Подозреваю, что проблема в букве "щ", когда я тестировал с кодировкой 1251 - тоже последняя строка не писалась в создаваемый файл, когда убрал - все в порядке стало. С 866 нормально всё.