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

Отыскать и скопировать цифры, содержащиеся в самой нижней строке текстового файла, в другой текстовый файл

30.06.2013, 15:38. Показов 4287. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Кто может, помогите пожалуйста решить задачу!
Есть файл lom.txt в нем находятся примерно следующие строки:
03.06.2013 22:21:57 бла бла бла бла бла
03.06.2013 22:21:57 бла бла 87666567485 бла бла бла
03.06.2013 22:21:57 бла бла бла бла бла бла бла бла
03.06.2013 22:21:57 бла 87363698752 бла бла бла бла
03.06.2013 22:21:57 бла бла бла 87452873942 бла бла
03.06.2013 22:21:57 бла бла бла бла бла бла бла бла
и т.д.
строк может быть очень много.
Необходимо найти цифры из 11 символов начинающиеся на "87?????????" из самой нижней строки и скопировать их в файл rom.txt
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.06.2013, 15:38
Ответы с готовыми решениями:

Дан текстовый файл f и целое число N. Скопировать строки текстового файла f, превышающие заданную длину n, в файл g
Дан текстовый файл f и целое число N. Скопировать строки текстового файла f, превышающие заданную длину n, в текстовый файл g. ...

Из текстового файла переписать информацию в другой текстовый файл
Как это сделать? например в top.txt написано "1" его нужно переписать скажем в top_new.txt .Как это сделать можно?

переписать данные из текстового файла, в другой текстовый файл
Добрый день. Есть код: setlocale(LC_ALL, "rus"); // корректное отображение Кириллицы char buff; // буфер промежуточного...

12
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
30.06.2013, 18:17
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
@echo off
SetLocal EnableExtensions EnableDelayedExpansion
 
::Исходный файл
set src=lom.txt
::Куда записывать
set dest=rom.txt
::Маска для поиска числа
set Num_Mask=87?????????
 
2>nul del "%dest%"
 
::Модифицируем маску согласно требованиям регулярных выражений
set Num_Mask=%Num_Mask:?=[0-9]%
::Получить последнюю строку
for /f "UseBackQ delims=" %%a in ("%src%") do set last=%%a
::Разбиваем по словам
set "words="!last: =" "!""
for %%w in (%words%) do (
  echo %%~w |>nul findstr /R "^%Num_Mask%$" && echo %%~w>>"%dest%"
)
 
pause
EndLocal
exit /B
0
0 / 0 / 0
Регистрация: 25.06.2013
Сообщений: 56
30.06.2013, 18:39  [ТС]
Ничего не происходит
может это связано с тем, что в последней строчке не содержится искомая цифра? Не всегда в последней строчке содержится "искомая" цифра, на нескольких последних строчках могут быть просто слова без всяких цифр, но цифры обязательно есть, в как максимум в одной из 10 последних строчек
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
30.06.2013, 18:46
Так задание такое:
найти цифры... из самой нижней строки
У меня он ищет все такие числа, но только из 1-й (последней) строки.

Переформулируйте.
0
0 / 0 / 0
Регистрация: 25.06.2013
Сообщений: 56
30.06.2013, 19:04  [ТС]
Нет, нужно искать из самой нижней строки, в которой есть соответствующие маске цифры. на последней строчке могут и не быть эти цифры, и на предпоследней и на предпредпоследней и т.д.
Как вариант можно в случае отсутствия соответствующие маске цифры на последней строчке, эту строчку удалить и искать дальше, пока на последней строчке не встретится цифра соответствующая заданной маске.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
30.06.2013, 19:07
Т.е. иными словами нужно искать в обратном порядке снизу вверх, так?

А сколько там таких чисел нужно найти 1 или больше?
0
0 / 0 / 0
Регистрация: 25.06.2013
Сообщений: 56
30.06.2013, 19:11  [ТС]
Так точно! только одну НО в самой нижней строчке (обязательно)
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
30.06.2013, 19:13
Тогда проще построить массив строк, и читать в обратном порядке уже с массива:
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
26
27
28
29
30
31
::Поиск в строках в обратном порядке
@echo off
SetLocal EnableExtensions EnableDelayedExpansion
 
::Исходный файл
set src=lom.txt
::Куда записывать
set dest=rom.txt
::Маска для поиска числа
set Num_Mask=87?????????
 
2>nul del "%dest%"
 
::Модифицируем маску согласно требованиям регулярных выражений
set Num_Mask=%Num_Mask:?=[0-9]%
::Получить все строки в массив
for /f "UseBackQ delims=" %%a in ("%src%") do set n+=1& set line.!n!=%%a
::Читаем массив строк в обратном порядке
for /L %%C in (%n%,-1,1) do (
  rem Разбиваем по словам
  set "words="!line.%%C: =" "!""
  for %%w in (%words%) do (
    echo %%~w |>nul findstr /R "^%Num_Mask%$" && (echo %%~w>>"%dest%"& set found=true)
  )
  if defined found goto ext
)
:ext
 
pause
EndLocal
exit /B
0
0 / 0 / 0
Регистрация: 25.06.2013
Сообщений: 56
30.06.2013, 19:26  [ТС]
что то не получается. может дело в кодировке файла?
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
30.06.2013, 19:31
Если только он не UTF.
Лучше давайте как обычно, демо-файл (в исходной кодировке) и то, что должно получится.
0
0 / 0 / 0
Регистрация: 25.06.2013
Сообщений: 56
30.06.2013, 19:53  [ТС]
а получить должны номер из самой нижней строчки, а это в данном случае 87567778218 и записать его например в rom.txt
Вложения
Тип файла: txt log.txt (2.7 Кб, 6 просмотров)
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
30.06.2013, 21:14
Ох, много-много ошибок допускаю, аж стыдно.

Вот рабочий вариант (как оказалось довольно медленный, можно переписать алгоритм):
(правки в 17,22,23 строках предыдущего кода)

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
26
27
28
29
30
31
::Поиск в строках в обратном порядке
@echo off
SetLocal EnableExtensions EnableDelayedExpansion
 
::Исходный файл
set src=log.txt
::Куда записывать
set dest=rom.txt
::Маска для поиска числа
set Num_Mask=87?????????
 
2>nul del "%dest%"
 
::Модифицируем маску согласно требованиям регулярных выражений
set Num_Mask=%Num_Mask:?=[0-9]%
::Получить все строки в массив
for /f "UseBackQ delims=" %%a in ("%src%") do set /A n+=1& set line.!n!=%%a
::Читаем массив строк в обратном порядке
for /L %%C in (%n%,-1,1) do (
  rem Разбиваем по словам
  set "words="!line.%%C: =" "!""
  for %%w in (!words!) do (
    echo %%~w|>nul findstr /R "^%Num_Mask%$" && (echo %%~w>>"%dest%"& set found=true)
  )
  if defined found goto ext
)
:ext
 
pause
EndLocal
exit /B
Добавлено через 6 минут
Этот будет работать быстрее: с предварительной фильтрацией и выходом из цикла сразу как только нашли первое число.

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
26
27
28
29
30
31
32
33
::Поиск в строках в обратном порядке
@echo off
SetLocal EnableExtensions EnableDelayedExpansion
 
::Исходный файл
set src=log.txt
::Куда записывать
set dest=rom.txt
::Маска для поиска числа
set Num_Mask=87?????????
 
2>nul del "%dest%"
 
::Модифицируем маску согласно требованиям регулярных выражений
set Num_Mask=%Num_Mask:?=[0-9]%
::Фильтрация файла
findstr /R "%Num_Mask%" < "%src%" > "%dest%_"
::Получить все строки с отфильтрованного файла в массив
for /f "UseBackQ delims=" %%a in ("%dest%_") do set /A n+=1& set line.!n!=%%a
::Читаем массив строк в обратном порядке
for /L %%C in (%n%,-1,1) do (
  rem Разбиваем по словам
  set "words="!line.%%C: =" "!""
  for %%w in (!words!) do (
    echo %%~w|>nul findstr /R "^%Num_Mask%$" && (echo %%~w>>"%dest%"& goto ext)
  )
)
:ext
2>nul del "%dest%_"
 
pause
EndLocal
exit /B
0
0 / 0 / 0
Регистрация: 25.06.2013
Сообщений: 56
30.06.2013, 23:24  [ТС]
Спасибо огромное, Стас!!! С меня причитается...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.06.2013, 23:24
Помогаю со студенческими работами здесь

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

Переписать в текстовый файл Т2 содержимое текстового файла Т1 без строк, содержащих цифры
Help. Чистый си Разработать программу, переписывающую в текстовый файл Т2 содержимое текстового файла Т1, но без строк, содержащих...

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

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

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


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru