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

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

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

Author24 — интернет-сервис помощи студентам
подскажите пожалуйста. Есть .txt файл, в нем нужно по удалять строчки - где какой либо символ повторяется больше 2, 3 раз.
пример: нужно удалить вот такие строки (в данном случае символ "1") - qw1t1, i1pk1O1, 1Pa01, 1GV1bn1nbg1.
в каких - то случаях нужно удалить строчки где символ повторяется больше 2раз, а где - то больше 4раз.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.01.2015, 10:21
Ответы с готовыми решениями:

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

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

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

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

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

Добавлено через 22 часа 26 минут
хотя бы чтоб символ не повторялся больше 6раз.
0
2 / 2 / 0
Регистрация: 23.02.2014
Сообщений: 197
10.01.2015, 13:47  [ТС] 4
пример: нужно удалить строчки где символ повторяется больше 6раз - ui1gf1hy1ju1ij1j1CX1w1ee1, oPhgPtqPcsPzPjPGGPwwwwP и т.д.
0
188 / 145 / 32
Регистрация: 04.10.2013
Сообщений: 149
10.01.2015, 17:16 5
если для какого то определенного символа, то это будет выглядеть так:
Кликните здесь для просмотра всего текста
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
2 / 2 / 0
Регистрация: 23.02.2014
Сообщений: 197
11.01.2015, 13:14  [ТС] 6
YupiRex, спс, попробую.
вообще словари создавались на основе 50символов. поэтому желательно пройтись по всем.

файлы от 10~20мб норм переб. а что за 3 способ(он не запустился)?
0
2 / 2 / 0
Регистрация: 23.02.2014
Сообщений: 197
03.07.2015, 05:04  [ТС] 7
подскажите плиз. как применить данный код ко всей папке, а не только к одному файлу:
Кликните здесь для просмотра всего текста
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
03.07.2015, 05:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.07.2015, 05:04
Помогаю со студенческими работами здесь

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

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

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

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

В текстовом файле каждую вторую строку разбить на слова
Задача:в текстовом файле каждую вторую строку разбить на слова.Результат вывести в другой файл. С...

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru