Страница 1 из 2

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

Добавлено: Пн июн 21, 2010 15:26
Flasher
Есть пару выделенных файлов, один в одной панели, другой в другой.
В файле A список:
232....="ТекстX"
7543..="ТекстY"
461..="Текст..Z"
...
в файле B список:
232....="Нужный текстX"блабла""
7543..="Нужный текстY"блабла""
461..="Нужный текст..Z"блабла""
...
Необходимо создать ещё два файла:
в новом первом файле N вставить отформатированный файл B, оставив только строки с "Нужный текст~"
во втором новом файле M сделать следующих список:
"Нужный текстX"="ТекстX"
"Нужный текстY"="ТекстY"
"Нужный текст..Z"="Текст..Z"
...
Просьба помочь! Списки длинные, чтобы ручками править. Изображение

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

Добавлено: Пн июн 21, 2010 20:28
Tol!k
Flasher писал(а):в новом первом файле N вставить отформатированный файл B, оставив только строки с "Нужный текст~"

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

findstr /b /r /c:[0-9]*= "B.txt" |>N.txt ssed.exe -n -r s/.+=("[^"]+").+/\1/p

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

Добавлено: Пн июн 21, 2010 21:10
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)

Добавлено: Пн июн 21, 2010 21:14
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

Добавлено: Пн июн 21, 2010 21:30
Flasher
Tol!k писал(а):в A.txt не должно быть лишних строк (д.б. ровно сколько в N.txt)
Вот в чём дело. А это никак обойти нельзя? А то у меня там есть разные текстовые вставки, можно такие строки как-то игнорировать вместе с пустыми строками? Мне нужны эти строки для описания, как секции.

Добавлено: Пн июн 21, 2010 21:37
Tol!k
Пустые строки не проблема, они не учитываются.

Как различать нужные-ненужные строки?

Добавлено: Пн июн 21, 2010 21:57
Flasher
Tol!k писал(а):Пустые строки не проблема, они не учитываются.
Я попробывал удалить все, оставив из лишних только пустые, всё равно создаётся пустой файл.
Tol!k писал(а):Как различать нужные-ненужные строки?
Ненужные строки в начале не содержат цифр.

Добавлено: Пн июн 21, 2010 23:36
Tol!k
Flasher писал(а):Ненужные строки в начале не содержат цифр.
Добавил фильтры

Добавлено: Вт июн 22, 2010 00:36
Flasher
Tol!k писал(а):ssed.exe не доступен :?
И где мне его взять, и куда вшить? Пока по нулям.

Добавлено: Вт июн 22, 2010 00:54
Tol!k
http://sed.sourceforge.net/grabbag/ssed/sed-3.62.zip
Положить в папку, прописанную в %PATH%

Добавлено: Вт июн 22, 2010 12:56
Flasher
В %Path% у меня несколько папок прописано, есть ТС, system32, закинул и туда и туда. Создал файлик B.txt с содержимым:
  • 87678="блабла"бубу""
    84567="бабаба"бубе""
Курсор на нём, жму кнопку - создаётся опять пустой.

Добавлено: Вт июн 22, 2010 17:50
Tol!k
Похоже, у тебя уникодные файлы

Добавлено: Вт июн 22, 2010 18:15
Flasher
Нет, по умолчанию при сохранении в AkelPad стоит ANSI.

Добавлено: Вт июн 22, 2010 19:00
Tol!k
Выкладывай файлы (в архиве)