Создание файлов с форматированием текста из других файлов

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Создание файлов с форматированием текста из других файлов

Сообщение Flasher »

Есть пару выделенных файлов, один в одной панели, другой в другой.
В файле A список:
232....="ТекстX"
7543..="ТекстY"
461..="Текст..Z"
...
в файле B список:
232....="Нужный текстX"блабла""
7543..="Нужный текстY"блабла""
461..="Нужный текст..Z"блабла""
...
Необходимо создать ещё два файла:
в новом первом файле N вставить отформатированный файл B, оставив только строки с "Нужный текст~"
во втором новом файле M сделать следующих список:
"Нужный текстX"="ТекстX"
"Нужный текстY"="ТекстY"
"Нужный текст..Z"="Текст..Z"
...
Просьба помочь! Списки длинные, чтобы ручками править. Изображение
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Re: Создание файлов с форматированием текста из других файлов

Сообщение Tol!k »

Flasher писал(а):в новом первом файле N вставить отформатированный файл B, оставив только строки с "Нужный текст~"

Код: Выделить всё

findstr /b /r /c:[0-9]*= "B.txt" |>N.txt ssed.exe -n -r s/.+=("[^"]+").+/\1/p
Последний раз редактировалось Tol!k Пн июн 21, 2010 23:35, всего редактировалось 2 раза.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Tol!k
О, ожидаемые люди! :)
Файл под курсором, пишу в комстроке ТС предложенную строку - создаётся пустой файл. То же самое с кнопкой, пишу cmd /c >N.txt ssed.exe -n -r s/.*=(\"[^\"]*\").*/\1/p , в параметрах %N, результат аналогичный.
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

M.cmd:

Код: Выделить всё

@echo off &chcp 1251 >nul
setlocal enableextensions
set /a s=0
for /f "tokens=2 delims==" %%a in ('findstr /b /r /c:[0-9]*= "A.txt"') do call :s %%a
set /a s=0
for /f "usebackq delims=" %%a in ("N.txt") do call :o %%a
endlocal
goto :eof

:s
set /a s+=1 &set str%s%=%1
goto :eof

:o
set /a s+=1 &call echo %1=%%str%s%%%>> "M.txt"
goto :eof
Note:
в A.txt и B.txt строки должны соответствовать;
в A.txt не должно быть лишних строк (д.б. ровно сколько в N.txt)
Последний раз редактировалось Tol!k Пн июн 21, 2010 23:34, всего редактировалось 2 раза.
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

Flasher писал(а):пишу в комстроке ТС предложенную строку - создаётся пустой файл.
ssed.exe не доступен :?

Кнопка:

Код: Выделить всё

TOTALCMD#BAR#DATA
%comspec% /c
findstr /b /r /c:[0-9]*= %N |>N.txt ssed.exe -n -r s/.+=("[^"]+").+/\1/p
%COMMANDER_PATH%\TOTALCMD.EXE,26
N.txt

1
-1
Последний раз редактировалось Tol!k Пн июн 21, 2010 23:33, всего редактировалось 2 раза.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Tol!k писал(а):в A.txt не должно быть лишних строк (д.б. ровно сколько в N.txt)
Вот в чём дело. А это никак обойти нельзя? А то у меня там есть разные текстовые вставки, можно такие строки как-то игнорировать вместе с пустыми строками? Мне нужны эти строки для описания, как секции.
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

Пустые строки не проблема, они не учитываются.

Как различать нужные-ненужные строки?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Tol!k писал(а):Пустые строки не проблема, они не учитываются.
Я попробывал удалить все, оставив из лишних только пустые, всё равно создаётся пустой файл.
Tol!k писал(а):Как различать нужные-ненужные строки?
Ненужные строки в начале не содержат цифр.
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

Flasher писал(а):Ненужные строки в начале не содержат цифр.
Добавил фильтры
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Tol!k писал(а):ssed.exe не доступен :?
И где мне его взять, и куда вшить? Пока по нулям.
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

http://sed.sourceforge.net/grabbag/ssed/sed-3.62.zip
Положить в папку, прописанную в %PATH%
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

В %Path% у меня несколько папок прописано, есть ТС, system32, закинул и туда и туда. Создал файлик B.txt с содержимым:
  • 87678="блабла"бубу""
    84567="бабаба"бубе""
Курсор на нём, жму кнопку - создаётся опять пустой.
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

Похоже, у тебя уникодные файлы
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Нет, по умолчанию при сохранении в AkelPad стоит ANSI.
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

Выкладывай файлы (в архиве)
Ответить