Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
2 / 2 / 2
Регистрация: 28.09.2015
Сообщений: 286

Добавить блоки строк из одного txt файла в другие txt файлы

05.07.2019, 16:58. Показов 3063. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Можно ли сделать распределение блоков из одного txt в другие?

В одном txt файле (назовем его общим) есть множество блоков строк, разделенных разделителем //==================

Необходимо каждый из этих блоков строк добавить в нужный txt файл (рассортировать).
Как определить, в какой txt файл добавить каждый блок строк из общего txt файла? Определять нужно по поиску.

Например, общий файл general.txt имеет вид (на самом деле может быть не одна тысяча блоков строк):

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
File Name.type:  0701start.avi
Resolution:  640x480 
Duration:  0:15:24
Filesize:  214Mb
//==================
File Name.type:  0894gsd.mp4
Resolution:  640x480 
Duration:  0:31:24
Filesize:  239Mb
Language: English
Censorship: Yes
Subtitle: No
//==================
File Name.type:  start0154.wmv
Resolution:  600x400 
Duration:  0:49:14
Filesize:  839Mb

Я указываю в скрипте поиск слова, и в какой txt добавить блок строк, если слово найдется:

Code
1
2
"gsd" - C:\video.txt
"start" - C:\clip.txt

В результате выполнения скрипта должны появится 2 файла на диске C:

video.txt
Code
1
2
3
4
5
6
7
File Name.type:  0894gsd.mp4
Resolution:  640x480 
Duration:  0:31:24
Filesize:  239Mb
Language: English
Censorship: Yes
Subtitle: No
clip.txt
Code
1
2
3
4
5
6
7
8
File Name.type:  0701start.avi
Resolution:  640x480 
Duration:  0:15:24
Filesize:  214Mb
File Name.type:  start0154.wmv
Resolution:  600x400 
Duration:  0:49:14
Filesize:  839Mb
Примечание:
Файлы txt должны появиться, если их не было, но если они были, то блоки строк должны просто добавиться (в общем txt будет много блоков строк, которые должны уйти в один и тот же txt файл).
Бывают блоки в которых только одна строка (и разделитель конечно).
Результаты будут добавляться в txt файлы созданные в windows (блокнот, ansi).

0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.07.2019, 16:58
Ответы с готовыми решениями:

Вставить N последних строк одного TXT-файла в конец другого TXT-файла
Здравствуйте, подскажите пожалуйста, как можно скопировать n последних строк одного тхт файла и вставить их в конец другого тхт файла?

Чтение из файла 'New.txt', запись четных строк в '1.txt', а нечетных в '2.txt'
В общем все работает, но есть "НО", иначе бы не открывал тему. Содержимое исходного файла: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2...

Копирование определенных строк с одного .txt на другой *.txt
Ребзи помогите пожалуйста. Задача такая, есть текстовой файл с множ-во строк. Нужно вытащить оттуда фразу и записать в другой текстовой...

13
 Аватар для bidstrup
419 / 179 / 27
Регистрация: 11.03.2018
Сообщений: 771
05.07.2019, 18:42
А что символизирует смайлик, это шутка была что ли?
0
2 / 2 / 2
Регистрация: 28.09.2015
Сообщений: 286
05.07.2019, 18:58  [ТС]
Цитата Сообщение от bidstrup Посмотреть сообщение
А что символизирует смайлик, это шутка была что ли?
Почему? просто так поставил )
0
 Аватар для alhaos
1929 / 545 / 154
Регистрация: 20.02.2019
Сообщений: 2,664
Записей в блоге: 65
08.07.2019, 07:53
split плюс условие

PowerShell
1
2
3
4
5
6
(gc C:\tmp\general.txt -Raw ) -split '//==================' | %{
    if ($_ -match 'gsd')
        {$_ | ac C:\tmp\video.txt}
    if ($_ -match 'start')
        {$_ | ac C:\tmp\clip.txt}
}
Добавлено через 6 минут
замерьте время, если будет недопустимо, напишите.
0
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
08.07.2019, 17:53
alhaos,
split плюс условие
Лучше регулярка.

Что-то типа
PowerShell
1
2
([regex]'(?s)File Name.type:\s+\w+start.*?//=+').matches($text).value
([regex]'(?s)File Name.type:\s+\w+gsd.*?//=+').matches($text).value
Правда, тут есть и свои нюансы
0
 Аватар для alhaos
1929 / 545 / 154
Регистрация: 20.02.2019
Сообщений: 2,664
Записей в блоге: 65
09.07.2019, 06:43
Цитата Сообщение от v_svitere Посмотреть сообщение
Лучше регулярка.
Что-то типа

([regex]'(?s)File Name.type:\s+\w+start.*?//=+').matches($text).value
([regex]'(?s)File Name.type:\s+\w+gsd.*?//=+').matches($text).value
ну то что моя регулярка "так себе", согласен, но неужели вам удобнее так:
PowerShell
1
([regex]'(?s)File Name.type:\s+\w+start.*?//=+').matches($text).value
чем вот так:
PowerShell
1
$_ -match 'File Name.*start'
да и в значении совпадения тут нет необходимости, достаточно знать содержат ли строка регулярное выражение.
0
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
09.07.2019, 09:54
alhaos,
да и в значении совпадения тут нет необходимости, достаточно знать содержат ли строка регулярное выражение.
Вы даже не попытались разобраться что делает мой код. Отсюда возникает вопрос: зачем давать комментарии к коду, который ты не понял?

PowerShell
1
([regex]'(?s)File Name.type:\s+\w+start.*?//=+').matches($text).value
Сразу получает коллекцию матчей по искомому Pattern-у. Здесь не нужно ничего сравнивать, никаких форейчей и условных конструкций.
0
 Аватар для alhaos
1929 / 545 / 154
Регистрация: 20.02.2019
Сообщений: 2,664
Записей в блоге: 65
09.07.2019, 13:19
Цитата Сообщение от v_svitere Посмотреть сообщение
зачем давать комментарии к коду, который ты не понял?
С чего вы взяли что я понял, я понял, не правильно...
Что то агрессивные все сегодня.

Добавлено через 6 минут
нет чтобы написать, "чувак ты фишки не рубишь, тут вот так..."

Правду следует подавать так, как подают пальто, а не швырять в лицо, как мокрое полотенце.
— Марк Твен,
0
210 / 59 / 26
Регистрация: 16.06.2016
Сообщений: 193
09.07.2019, 14:10
Цитата Сообщение от v_svitere Посмотреть сообщение
Правда, тут есть и свои нюансы
Приветствую! Ну и как бороться с этим нюансом ? Что-то слету не получается.
Подскажите, плиз!

интересует конкретный нюанс - удаление \r\n
0
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
09.07.2019, 14:27
alhaos, Я и не думал, писать что-то агрессивное, просто недоуменно спросил.

AAT666,

интересует конкретный нюанс - удаление \r\n
Покажите на примере, что именно вам нужно.
0
210 / 59 / 26
Регистрация: 16.06.2016
Сообщений: 193
09.07.2019, 14:55
Взял Ваш код:

PowerShell
1
([regex]'(?s)File Name.type:\s+\w+start.*?//=+').matches($text).value
Взял файл топикстартера:

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
File Name.type:  0701start.avi
Resolution:  640x480 
Duration:  0:15:24
Filesize:  214Mb
//==================
File Name.type:  0894gsd.mp4
Resolution:  640x480 
Duration:  0:31:24
Filesize:  239Mb
Language: English
Censorship: Yes
Subtitle: No
//==================
File Name.type:  start0154.wmv
Resolution:  600x400 
Duration:  0:49:14
Filesize:  839Mb
На выходе получил:

Code
1
File Name.type:  0701start.avi Resolution:  640x480  Duration:  0:15:24 Filesize:  214Mb //==================
Хотелось бы вернуть форматирование текста.
0
 Аватар для alhaos
1929 / 545 / 154
Регистрация: 20.02.2019
Сообщений: 2,664
Записей в блоге: 65
09.07.2019, 15:11
вот готовое решение на основе решения v_svitere,
PowerShell
1
2
3
$text = (gc C:\tmp\general.txt -Raw )
    ([regex]'(?s)File Name.type:\s+\w+start.*?//=+').matches($text).value | sc C:\tmp\video.txt
    ([regex]'(?s)File Name.type:\s+\w+gsd.*?//=+').matches($text).value | sc C:\tmp\clip.txt
работает быстрее моего.
1
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
09.07.2019, 15:33
AAT666,
Вы скорее всего считали текст из файла в переменную типа String, тогда как gc по умолчанию считывает в массив типа String.

Альтернативным вариантом предложенному выше, будет использование NET-метода, статического класса [system.io.file]
ReadAllText, который сразу считывает контент в переменную типа string, с сохранением переводов строк.

PowerShell
1
$text=[System.IO.File]::ReadAllText($my_file,[Text.encoding]::default)
1
210 / 59 / 26
Регистрация: 16.06.2016
Сообщений: 193
09.07.2019, 15:50
alhaos, v_svitere, Благодарствую, уважаемые!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.07.2019, 15:50
Помогаю со студенческими работами здесь

Копировать определённый текст с одного txt файла в другой txt
Здравтсвуйте. Подскажите как написать команду cmd/bat, для такой задачи: Есть текстовый документ, скажем название Test_1.txt, в нем будет...

Копирование данных из одного файла txt в другой файл txt
Помогите, пожалуйста, создать bat файл, который бы из одного документа, например, 1.txt копировал бы данные в другой документ с названием...

Копировать определённый текст с одного txt файла в другой txt
Здравтсвуйте. Подскажите как написать в PowerShell задачу (если это делается не в PowerShell, подскажите в чем, что бы я создал тему там): ...

Переместить текст из одного txt файла в другой txt файл
Есть файл Admin.txt и Admin_Settings.txt Нужно что бы при нажатии на кнопку весь текст и все строки из Admin_Settings.txt переместились в...

Из одного .txt файла сохранить все УНИКАЛЬНЫЕ слова в другой .txt файл используя cmd
нужно используя файл например run.cmd как-то сделать следующее... (накрайняк используя PS) из файла IN.txt -- найти и сохранить...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru