1 (изменено: viviancels, 2022-09-14 08:49:54)

Тема: AHK: Копирование текста из файлов с одинаковым именем в другой файл

Прочитал в интернете, что для моей цели удобен AWK. Но может, с задачей справится  AutoHotkey.
Есть много папок, которые начинаются, например, так:

+ открыть спойлер

[US001] слова числа символы
[US002] слова числа символы
[US003] слова числа символы
[USR001] слова числа символы
[USC001] слова числа символы

1) В этих папках есть файлы с одинаковым именем 123.txt, в каждом файле нужно скопировать весь текст, кроме двух последних строк. Также есть файл 555.txt, в который нужно все копировать содержимое файлов 123.txt. Условие такое: если название папки с файлом 123.txt начинается с [US001], то в файле 555.txt нужно найти строку, название которой также начинается с [US001], после этой строки найти блок текста, который много раз повторяется в этом файле, и в его середину, в пустую строку, вставить содержимое 123.txt кроме последних 2 пустых строк:

+ открыть спойлер

слова числа символы.
слова числа символы.
слова числа символы.
Начало блока:
слова числа символы[US001]слова числа символы .
слова числа символы.
слова числа символы.
слова числа символы.
слова числа символы.
слова числа символы.
Повторяющийся текст во всех блоках:
dasda-ds=afasd.
fsd]

fds]
sdfs-df=sd

jhkhh-hjkh=faasda.
fsd]

fds]
sdfs-df=sd.
слова числа символы.
Конец блока 1.

В середину жирного текста надо вставить текст, скопированный из файла 123.txt из папки, название которой начинается с [US001].

То же самое с папкой [US002], в которой также есть файл с таким же именем 123.txt, но с другим текстом внутри, который тоже нужно скопировать, кроме двух пустых последних строк, и вставить в файл 555.txt после блока, в котором есть [US002], в пустую строку в середине другого жирного текста:

+ открыть спойлер

Блок 2:
слова числа символы[US001]слова числа символы.
слова числа символы.
слова числа символы.
слова числа символы.
слова числа символы.
слова числа символы.
Повторяющийся текст во всех блоках:
dasda-ds=afasd.
fsd]

fds]
sdfs-df=sd

jhkhh-hjkh=faasda.
fsd]

fds]
sdfs-df=sd.

2) В папках еще есть текстовые файлы 456.txt, в них нужно скопировать весь текст, кроме первых шести строк (пустых и непустых) и кроме последней пустой строки, так же в файле 555.txt найти строку, в которой есть [US002], вставить в середину другого повторяющегося абзаца, который идет сразу же следом за тем первым:

+ открыть спойлер

jhkhh-hjkh=faasda.
fsd]

fds]
sdfs-df=sd.

Результат должен быть таким:

+ открыть спойлер

слова числа символы.
слова числа символы.
Блок 1:
слова числа символы[US001]слова числа символы.
слова числа символы.
слова числа символы.
слова числа символы.
dasda-ds=afasd.
fsd]
текст, скопированный из 123.txt из папки, название которой начинается с [US001].
fds]
sdfs-df=sd.
jhkhh-hjkh=faasda.
fsd]
текст, скопированный из 456.txt из папки, название которой начинается с [US001].
fds]
sdfs-df=sd.
слова числа символы.
Конец блока 1.
Блок 2:
слова числа символы[US002]слова числа символы.
слова числа символы.
слова числа символы.
слова числа символы.
dasda-ds=afasd.
fsd]
текст, скопированный из 123.txt из папки, название которой начинается с [US002].
fds]
sdfs-df=sd.
jhkhh-hjkh=faasda.
fsd]
текст, скопированный из 456.txt из папки, название которой начинается с [US002].
fds]
sdfs-df=sd.
слова числа символы.
Конец блока 2.

Пока я только нашел способ выделить текст в файлах 123 и 456 в awk.
123:

'$1~/^f/,/=$/ {print}'

456:

'NF{print s $0; s=""; next} {s=s ORS}'

2 (изменено: viviancels, 2022-09-15 22:23:24)

Re: AHK: Копирование текста из файлов с одинаковым именем в другой файл

Тему можно закрыть.