PDA

Показать полную графическую версию : Найти стороку, затем записать в другой файл ее и последующую


NKata
13-02-2014, 11:19
Всем здравствуйте.
Общее описание проблемы:
Есть 2 текстовых файла размерами в 600Мб и 6Гб. В них содержатся строки, которые можно условно разделить на 4 группы, расположены они последовательно, что может даже упростит задачу. Нужно найти строки, начинающиеся на @SR и записать их и последующие за ними. Порядок записи необходим как в исходном файле. Возможно задача упрощается, так как эти строки заведомо имеют номер 1,2 5,6 9,10 и т.д. 2 файла хорошо бы склеить, но думаю это делается просто >> вместо > во втором файле.

Заранее извиняюсь, если не нашел подобную тему

NKata
13-02-2014, 11:21
@echo off

::Выставляем нужное число строк для вывода после искомой:
set k=3

for /f %%i in ('find /c /v ""^<"test.txt"') do set l=%%i
(
for /l %%i in (1 1 %l%) do (
set string=
set /p string=
call set /p="%%string%%"<nul| findstr /xc:"строка поиска" /xc:"строка поиска"&& set m=%%i
for /l %%j in (1 1 %k%) do (
if defined m (
set /a n=m+%%j
call echo %%n%%| findstr /x %%i>nul&& if defined string (
call set /p="%%string%%"<nul
echo.
)
)
)
)
)<"test.txt">"new.txt"


Данный код взят с другого ресурса, Yury простите меня) но тут не работают регулярные выражения

Georgio
13-02-2014, 12:15
Данный код взят с другого ресурса, Yury простите меня) »

Не за что.


но тут не работают регулярные выражения »

Попробуйте заменить: call set /p="%%string%%"<nul| findstr /xc:"строка поиска" /xc:"строка поиска"&& set m=%%i на: call set /p="%%string%%"<nul| findstr /rc:"регулярное выражение"&& set m=%%i

NKata
13-02-2014, 13:30
Спасибо огромное) работает!




© OSzone.net 2001-2012