Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
-6 / 3 / 0
Регистрация: 23.02.2014
Сообщений: 202

Удалить в текстовом файле каждую строку, в которой число повторов какого-либо символа превышает заданное

08.01.2015, 10:21. Показов 1600. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
подскажите пожалуйста. Есть .txt файл, в нем нужно по удалять строчки - где какой либо символ повторяется больше 2, 3 раз.
пример: нужно удалить вот такие строки (в данном случае символ "1") - qw1t1, i1pk1O1, 1Pa01, 1GV1bn1nbg1.
в каких - то случаях нужно удалить строчки где символ повторяется больше 2раз, а где - то больше 4раз.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.01.2015, 10:21
Ответы с готовыми решениями:

Удалить из матрицы первую из строк, сумма которой не превышает заданное число
дан двумерный массив, удалить из него первую из строк сумма которой не превышает заданное число.. удаление строки следует выполнить путем...

Необходимо в текстовом файле найти определенную строку, в которой имеется спец.символ и удалить строку
К примеру в файле есть записи: Привет Привет Хороший День Мне нужно, что бы запись с символом "Hi" была удалена, или с...

Определить позицию первого вхождения в заданную строку какого-либо символа
Помогите составить процедуру, позволяющую определить позицию первого вхождения в заданную строку какого-либо символа из второй заданной...

6
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
08.01.2015, 11:35
Так ведь судя из примеров - больше 1 раза, а не 2-х.
И уточните, что у Вас исходный файл - 100 mB и более.
В какой кодировке исходный файл?
0
-6 / 3 / 0
Регистрация: 23.02.2014
Сообщений: 202
09.01.2015, 10:41  [ТС]
Dragokas, - формат .txt, 100мб, т.к. 1Гб скрипты не поддерживают - зависают при обработке.
п.с. иногда нужно что бы символ повторялся 1раз, а иногда оставить что бы символ повторялся не более 2, 3 раз.

Добавлено через 22 часа 26 минут
хотя бы чтоб символ не повторялся больше 6раз.
0
-6 / 3 / 0
Регистрация: 23.02.2014
Сообщений: 202
10.01.2015, 13:47  [ТС]
пример: нужно удалить строчки где символ повторяется больше 6раз - ui1gf1hy1ju1ij1j1CX1w1ee1, oPhgPtqPcsPzPjPGGPwwwwP и т.д.
0
 Аватар для YupiRex
189 / 146 / 32
Регистрация: 04.10.2013
Сообщений: 150
10.01.2015, 17:16
если для какого то определенного символа, то это будет выглядеть так:
Кликните здесь для просмотра всего текста
Bash
1
2
3
4
5
6
7
8
9
@set infile=000.txt
@set outfile=111.txt
@set char=P
@set count=6
@echo off
setlocal ENABLEDELAYEDEXPANSION
for /l %%i in (1,1,!count!) do set reg=!reg!.*!char!
>nul findstr /v /r "!reg!" !infile!>!outfile!
exit /b


для любого определенного множества символов:
Кликните здесь для просмотра всего текста
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@set infile=000.txt
@set outfile=111.txt
@set count=4
@echo off
setlocal ENABLEDELAYEDEXPANSION
echo.>.tmp
>nul copy /y %infile% %outfile%
for /f "tokens=* delims=" %%a in (%outfile%) do (
    set "line=%%a"
    call :parsLine)
del /q "!outfile!.tmp" .tmp
exit /b
:parsLine
set "reg="
set "char=!line:~0,1!"
>nul findstr "!char!" .tmp && exit /b || (
    echo.!char!>>.tmp
    for /l %%i in (1,1,!count!) do set reg=!reg!.*!char!
    findstr /v /r "!reg!" !outfile! >!outfile!.tmp
    >nul copy /y !outfile!.tmp !outfile!)
set "line=!line:~1!"
if defined line goto parsLine
exit /b


ну и в продолжение темы о рекурсивном переборе строки:
Кликните здесь для просмотра всего текста
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@set infile=000.txt
@set outfile=111.txt
@set count=6
@echo off
setlocal ENABLEDELAYEDEXPANSION
if exist !outfile! del /q !outfile!
for /f "tokens=* delims=" %%a in (!infile!) do (
    set "line=%%a"
    set "num=0"
    call :parsLine
    if !err! lss !count! echo !line!>>!outfile!)
exit /b
 
:parsLine
set "err=1"
set "char=!line:~%num%,1!"
set "newline=!line:~%num%!"
set /a num+=1
if not defined char exit /b
:recurs
set "newline=!newline:~1!"
if "!char!"=="!newline:~0,1!" set /a err+=1 
if !err! geq !count! exit /b
if defined newline goto :recurs 
goto :parsLine
1
-6 / 3 / 0
Регистрация: 23.02.2014
Сообщений: 202
11.01.2015, 13:14  [ТС]
YupiRex, спс, попробую.
вообще словари создавались на основе 50символов. поэтому желательно пройтись по всем.

файлы от 10~20мб норм переб. а что за 3 способ(он не запустился)?
0
-6 / 3 / 0
Регистрация: 23.02.2014
Сообщений: 202
03.07.2015, 05:04  [ТС]
подскажите плиз. как применить данный код ко всей папке, а не только к одному файлу:
Кликните здесь для просмотра всего текста
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@set infile=0.txt
@set outfile=1.txt
@echo off
setlocal ENABLEDELAYEDEXPANSION
if exist !outfile! del /q !outfile!
for /f "tokens=* delims=" %%a in (!infile!) do (
    set line=%%a
    set newline=
    set err=0
    call :parsLine
    if !err!==0 echo !newline!>>!outfile!)
exit /b
:parsLine
set char=%line:~0,1%
set line=%line:~1%
set newline=!newline!!char!
echo.%line% | >nul findstr %char% &&set /a err+=1
if defined line goto parsLine
exit /b
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.07.2015, 05:04
Помогаю со студенческими работами здесь

Определить, является ли заданное число произведением цифр какого либо числа
Во входном файле дано число N - произведение цифр какого либо числа. Надо написать программу, которая определяет, является ли данное число...

Поиск позиции первого вхождения в первую строку какого-либо символа из второй строки
Написать метод, входными параметрами которого являются две строки. Метод должен возвращать позицию первого вхождения в первую строку...

Определить позицию первого вхождения в заданную строку какого-либо символа из второй заданной строки
б) Даны две строки произвольного текста. Составить процедуру, позволяющую определить позицию первого вхождения в заданную строку...

Процедура, позволяющая определить позицию первого вхождения в заданную строку какого-либо символа из второй
Помогите составить процедуру, позволяющую определить позицию первого вхождения в заданную строку какого-либо символа из второй ...

Определить, можно ли заданное натуральное число представить в виде квадрата какого либо простого числа
:cry:помогите


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru