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

Как вывести из текстового файла нужные строки?

11.11.2016, 11:11. Показов 3262. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Помогите пожалуйста. Есть файл в котором содержатся много строк с разделителями:

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

текст3
-----------------------------------------------------------------

или можно, чтобы просто был текст:
текст:3

P.s. Количество строк может быть любое
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.11.2016, 11:11
Ответы с готовыми решениями:

Как импортировать нужные значения из текстового файла?
Здравствуйте, форумчане! Поздравляю всех с идущими и грядущими праздниками; и, с угрызением совести от мысли, что отвлекаю вас от...

Из исходного файла вывести нужные строки из 3-его параметра в текстовый файл 2
Из исходного(paramstr(1)) файла вывести нужные строки из 3-его параметра(paramstr(3)) в текстовый файл 2(Paramstr(2)). uses crt; ...

Как извлечь из файла нужные строки?
У меня есть файл в котором хранятся нужные строчки которые нужно извлечь, для извлечения одной части записи работает такой код: string...

7
Покинул форум
3701 / 1484 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
11.11.2016, 12:45
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
@echo off
  setlocal enabledelayedexpansion
    chcp 1251>nul
    sort /+2147483647 input.txt>>top.tmp
    3<top.tmp (
      set /p d=<&3
      set /p s=<&3
    )
    echo:!s!>output.txt
    echo:!d!>>output.txt
    del /f /q top.tmp
  endlocal&chcp 866>nul
exit /b
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
11.11.2016, 16:40
До кучки подкину:
Windows Batch file
1
2
3
4
5
@echo off
set "f_in=file_in.txt"
set "f_out=file_out.txt"
<"%f_in%">"%f_out%" (find /c /v ""|set/p s=^& set/a s-=2|set/p ns=^& <"%f_in%" cmd/v/c more +!ns!)
exit
.
0
2 / 2 / 0
Регистрация: 28.01.2014
Сообщений: 210
11.11.2016, 17:18  [ТС]
Первый и второй вариант не подходят.
В конце оставляет только последние две строки, а в задаче написано, что количество строк может быть любое, извините, если не правильно выразился.

Т.е. должно остаться от пунктира до пунктира, например:

------------------------------------------------------------------
текст 3
тут еще может быть текст
и тут может быть

------------------------------------------------------------------
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
13.11.2016, 03:14
Цитата Сообщение от Olich666 Посмотреть сообщение
если не правильно выразился.
ну ни ... се малехо ошибся, ничего что код изменился совсем "чуть-чуть":
Windows Batch file
1
2
3
4
5
6
7
8
9
@echo off
setlocal enabledelayedexpansion
set "f=file_in.txt"
<"%f%">"new.txt" sort/+2147483647
set "x=^-*\>" &: маска тега
<"new.txt" (for /f "delims=:" %%a in ('more^|findstr/rn /c:"%x%"') do @set/a n+=1& set "v!n!=%%a"& set/a nd=v1+1& set/a kd=v2-1) &: v1 и v2 между первым и вторым
<"new.txt">$ (for /f "tokens=2 delims=[]" %%a in ('"for /l %%a in (%nd%,1,%kd%) do @find /n /v ""|find "[%%a]""') do @echo %%a)
<$>"new.txt" (sort/+2147483647)& del $
exit/b
.

Добавлено через 7 часов 56 минут
Вот еще вариант, даже 2

это с разделителями
Windows Batch file
1
2
3
4
5
6
7
8
@echo off
setlocal enabledelayedexpansion
set "f=file.txt"
set "mteg=^-*$"
<"%f%" (for /f "delims=:" %%a in ('more^|findstr/rn "%mteg%"') do set/a n+=1& set "ns_%%a=!n!")
for /f "tokens=2* delims==_" %%a in ('set ns_') do set/a n1=n-1& (if %%b==%n% set/a kd=%%a)& (if %%b==!n1! set/a nd=%%a)
<"%f%">"new.txt" (for /f "tokens=2 delims=[]" %%a in ('"for /l %%a in (%nd%,1,%kd%) do @find /n /v ""|find "[%%a]""') do @echo:%%a)
exit
это - без, только текст
Windows Batch file
1
2
3
4
5
6
7
8
@echo off
setlocal enabledelayedexpansion
set "f=file.txt"
set "mteg=^-*$"
<"%f%" (for /f "delims=:" %%a in ('more^|findstr/rn "%mteg%"') do set/a n+=1& set "ns_%%a=!n!")
for /f "tokens=2* delims==_" %%a in ('set ns_') do set/a n1=n-1& (if %%b==%n% set/a kd=%%a-1)& (if %%b==!n1! set/a nd=%%a+1)
<"%f%">"new.txt" (for /f "tokens=2 delims=[]" %%a in ('"for /l %%a in (%nd%,1,%kd%) do @find /n /v ""|find "[%%a]""') do @echo:%%a)
exit
.

Добавлено через 21 час 51 минуту
Или так, на вид вроде больше, на самом деле короче и меньше ограничений в символьном плане содержимого:
Windows Batch file
1
2
3
4
5
6
7
8
@echo off
set "f=file.txt"
set "mteg=^-*$"
setlocal enabledelayedexpansion
<"%f%" (for /f "delims=:" %%a in ('more^|findstr/n "%mteg%"') do @set/a n+=1, n_=n-1& set N!n!=%%a)& set/a nd=N!n_!+1, kd=N!n!-1
setlocal disabledelayedexpansion
<"%f%">"new.txt" (for /f "delims=" %%a in ('"for /l %%a in (%nd%,1,%kd%) do @find /n /v ""|find "[%%a]""') do @set "s=%%a"& cmd/v/c echo[!s:*]^^=!)
exit
.
0
2 / 2 / 0
Регистрация: 28.01.2014
Сообщений: 210
15.11.2016, 11:53  [ТС]
Есть еще одна проблемка.... могут быть пустые строки

Т.е. он выводит все до пустой строки
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
15.11.2016, 15:37
Olich666,
Вот тут я сделал утилиту, выведет и пустые строки, а вообще выкладывают содержимое файла, а не мокрых глаз, при проблемах.

Добавлено через 4 минуты
в вашем случае, запуск такой: teg_s.bat file.txt new.txt ---
только что проверил, пустые строки выводит прекрасно.
0
2 / 2 / 0
Регистрация: 28.01.2014
Сообщений: 210
04.07.2017, 13:24  [ТС]
Спасибо большое. Очень помогло
Хотелось бы, чтобы скрипт запускался не с параметрами teg_s.bat file.txt new.txt --- 2
А чтобы они уже были вписаны в самом коде и запускался просто teg_s.bat
Подскажи пожалуйста, а как будет выглядеть тогда код скрипта?

Добавлено через 17 минут
Разобрался
set "f_in=file.txt"
set "f_out=new.tx"
set "teg=---"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.07.2017, 13:24
Помогаю со студенческими работами здесь

Как вывести нужные мне строки по названию из memo1 в memo2
проблема такая, я загружаю файл в memo через OpenDialog, создал вторую memo, так вот мне нужно что бы в memo2 выводились все строки из...

Как вывести из текстового файла все строки, начинающиеся на слово "Организация"
при нажатии на кнопку в текстовое поле необходимо вывести все строки. начинающиеся на слово &quot;Организация&quot; строки в текстовом...

Вывести строки текстового файла на экран
Дан тестовый файл . Вывести строки этого файла на экран

Вывести на дисплей заданные строки текстового файла
Дан файл f, элементы которого являются строками: 1. Выведите на экран все строки файла, начинающиеся с символа ‘w’ или ‘W’ 2. все...

Вывести строки из текстового файла, начиная с последней
Собственно сабж. Имеется текстовый файл, в который записан любой текст построчно. (например: мама мыла раму мылом) ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
BOINC: 22 года — и всё ещё работает
Programma_Boinc 12.03.2026
BOINC: 22 года — и всё ещё работает Дэвид Андерсон написал ретроспективу. Кратко: в 2001 году он ушёл из United Devices, где был CTO, и за несколько месяцев написал ядро BOINC — клиент, сервер,. . .
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-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru