@Echo off
cls
@rem
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "ПРИМЕР выборки рефератов публикаций на конференциях      "
@rem "(н/т мероприятиях) с 1993 по 2013 гг.                    "
@rem 
@rem "Выборка строк производится из файла базы данных (БД)     "      
@rem "'c-polarization_radar.csv' в папке 'dbcj'                "
@rem 
@rem "Критерий выборки:                                        "
@rem "извлекаемые строки должны содержать словосочетания       "
@rem "'bistatic' ИЛИ(И) 'airborne SAR'                         "
@rem "то есть 'двухпозиционный' ИЛИ(И) 'самолетная РЛС с СА'   "
@rem 
@rem "Шаблоны для поиска записаны в файле 'template.txt'       "
@rem "в виде последовательных строк:                           "
@rem bistatic
@rem airborne SAR
@rem
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem
@rem "1. Удаляем предыдущие результаты"
@rem
echo 1. “¤ «Ґ­ЁҐ ЇаҐ¤л¤гйЁе аҐ§г«мв в®ў
nircmd wait 500
@rem
if exist srch\*result*.csv del /Q srch\*result*.csv
@rem
if exist temp\*.* del /Q temp\*.*
@rem
if not exist temp mkdir temp
if not exist srch mkdir srch
@rem
@rem "---------------------------------------------------------"
@rem "2. Проверяем наличие файлов БД в папке 'dbcj'            "
@rem "(Если файлов нет, то выходим из обработки)               "
@rem
echo 2. Џа®ўҐаЄ  ­ «ЁзЁп csv-д ©«®ў Ў § ¤ ­­ле ў Ї ЇЄҐ 'dbcj'
nircmd wait 500
@rem
ls dbcj\*.csv >temp\zuc01
@rem
set Size=0
set Files=temp\zuc01
for %%F in (%Files%) do if /i %%~zF EQU %Size% del /f %%F
@rem
if not exist temp\zuc01 goto CLEAN
@rem
@rem "---------------------------------------------------------"
@rem "3. Подготовка файла 'template.txt' к выборке             "
@rem "(формирование файла 'temp\tmpl')                         "
@rem 
echo 3. Џ®¤Ј®в®ўЄ  д ©«  'template.txt' Є ўлЎ®аЄҐ
nircmd wait 500
@rem 
@rem "Удаляем множественные пробелы                            "
sed "s/  */ /g" <template.txt >temp\zuf01
@rem
@rem "Удаляем пробелы и табуляции в конце строк                "
sed "s/[ \t]*$/\r/" <temp\zuf01 >temp\zuf02
@rem
@rem "Удаляем пустые строки в файле 'template.txt'             "
grep "."  <temp\zuf02 >temp\zuf03
@rem
@rem "Вставляем переносы в конце строк                         "
sed "s/$/\r/" <temp\zuf03 >temp\tmpl
@rem
@rem "---------------------------------------------------------"
@rem "4. Выборка строк в базах данных"
@rem 
echo 4. ‚лЎ®аЄ  бва®Є ў Ў § е ¤ ­­ле
nircmd wait 500
@rem 
@rem "ЦИКЛ выборки по списку 'temp\zuc01' файлов БД"
@rem
@rem "-------------------------------------------              "
@rem "4.1. Выборка строк. Вариант 1"
@rem
@rem "Из csv-файла извлекаются ВСЕ строки, содержащие          "
@rem "словосочетания 'bistatic' ИЛИ 'airborne SAR'             "
@rem "независимо от регистра                                   "
@rem "Для этого формируются bat-файлы со строкой вида          "
@rem grep -f temp\tmpl -i <dbcj\c-polarization_radar.csv >srch\c1-result1.csv
@rem
@rem
@rem "---------------------------------                        "
@rem "Конференции"
@rem "Формирования bat-файла 'ztmpc-1.bat' со строками вида    "
@rem grep -f temp\tmpl -i <dbcj\c-polarization_radar.csv >srch\c1-result1.csv
@rem ...
@rem 
sed "/\\c-/!d" <temp\zuc01 >temp\zuc02
set Size=0
set Files=temp\zuc02
for %%F in (%Files%) do if /i %%~zF EQU %Size% del /f %%F
@rem 
if not exist temp\zuc02 goto MC1
@rem 
sed = temp\zuc02 | sed "N;s/\n/\t/" >temp\zuc03
cut -f2 <temp\zuc03 >temp\zuc04
sed "s/^\(.*\)$/grep -f temp\\tmpl -i <\1\ >srch\\c/" <temp\zuc04 >temp\zuc04-1
cut -f1 <temp\zuc03 >temp\zuc04-2
paste temp\zuc04-1 temp\zuc04-2 >temp\zuc05
sed "s/\t//;s/$/-result1\.csv\r/" <temp\zuc05 >ztmpc-1.bat
if exist ztmpc-1.bat CALL ztmpc-1.bat
:MC1
@rem 
@rem "---------------------------------                        "
@rem "Журналы"
@rem "Формирования bat-файла 'ztmpj-1.bat' со строками вида"
@rem grep -f temp\tmpl -i <dbcj\j-polarimetric_radar_systems.csv >srch\j1-result1.csv
@rem ...
@rem 
sed "/\\j-/!d" <temp\zuc01 >temp\zuc06
set Size=0
set Files=temp\zuc06
for %%F in (%Files%) do if /i %%~zF EQU %Size% del /f %%F
@rem 
if not exist temp\zuc06 goto MJ1
@rem 
sed = temp\zuc06 | sed "N;s/\n/\t/" >temp\zuc07
cut -f2 <temp\zuc07 >temp\zuc08
sed "s/^\(.*\)$/grep -f temp\\tmpl -i <\1\ >srch\\j/" <temp\zuc08 >temp\zuc08-1
cut -f1 <temp\zuc07 >temp\zuc08-2
paste temp\zuc08-1 temp\zuc08-2 >temp\zuc09
sed "s/\t//;s/$/-result1\.csv\r/" <temp\zuc09 >ztmpj-1.bat
if exist ztmpj-1.bat CALL ztmpj-1.bat
:MJ1
@rem 
@rem "-------------------------------------------              "
@rem "4.2. Выборка строк. Вариант 2                            "
@rem
@rem "Извлекаются ВСЕ строки, содержащие словосочетания        "
@rem "'bistatic' И 'airborne SAR'                              "
@rem "Результат выборки записывается в файл 'result2.csv'      "
@rem
@rem "---------------------------------                        "
@rem "Формирование файла 'temp\tmpl2'                          "
sed -n "H;${x;s/\n/#/g;p}" <temp\tmpl >temp\tmpl2
@rem
@rem "---------------------------------                        "
@rem "Конференции                                              "
@rem "Формирования bat-файла 'ztmpc-2.bat' со строками вида    "
@rem grep "bistatic.*airborne SAR" -i <dbcj\c-polarization_radar.csv >srch\c1-result2.csv
@rem
sed "s/^#/\\x22/" <temp\tmpl2 >temp\zuc10
sed "s/#/\.\*/" <temp\zuc10 >temp\zuc11
@rem
sed "s/^\(.*\)$/sed \x22s\/grep -f temp\\\\tmpl\/grep \1\\x22\/\x22 <ztmpc-1.bat >temp\\zuc13/" <temp\zuc11 >zuc12.bat
CALL zuc12.bat
sed "s/result1/result2/;s/$/\r/" <temp\zuc13 >ztmpc-2.bat
CALL ztmpc-2.bat
if exist zuc12.bat del /Q zuc12.bat
@rem 
@rem "---------------------------------                        "
@rem "Журналы                                                  "
@rem "Формирования bat-файла 'ztmpj-2.bat' со строками вида    "
@rem grep "bistatic.*airborne SAR" -i <dbcj\j-polarization_radar.csv >srch\j1-result2.csv
@rem ...
@rem 
sed "s/^\(.*\)$/sed \x22s\/grep -f temp\\\\tmpl\/grep \1\\x22\/\x22 <ztmpj-1.bat >temp\\zuc15/" <temp\zuc11 >zuc14.bat
CALL zuc14.bat
sed "s/result1/result2/;s/$/\r/" <temp\zuc15 >ztmpj-2.bat
CALL ztmpj-2.bat
if exist zuc14.bat del /Q zuc14.bat
@rem 
@rem "-------------------------------------------              "
@rem "4.3. Выборка строк. Вариант 3                            "
@rem
@rem "Извлекаются ВСЕ строки, содержащие словосочетания        "
@rem "'bistatic' И 'airborne' И 'SAR'                          "
@rem "Результат выборки записывается в файл 'result3.csv'      "
@rem
@rem "---------------------------------                        "
@rem "Формирование файла 'temp\tmpl3'                          "
sed "s/ /#/g" <temp\tmpl >temp\zuc16
@rem
sed -n "H;${x;s/\n/#/g;p}" <temp\zuc16 >temp\zuc17
@rem
sed "s/$/\r/g" <temp\zuc17 >temp\tmpl3
@rem
@rem "---------------------------------                        "
@rem "Конференции                                              "
@rem "Формирования bat-файла 'ztmpc-3.bat' со строками вида    "
@rem grep "bistatic.*airborne.*SAR" -i <dbcj\c-polarization_radar.csv >srch\c1-result3.csv
@rem
sed "s/^#/\\x22/" <temp\tmpl3 >temp\zuc18
sed "s/#/\.\*/g" <temp\zuc18 >temp\zuc19
@rem
sed "s/^\(.*\)$/sed \x22s\/grep -f temp\\\\tmpl\/grep \1\\x22\/\x22 <ztmpc-1.bat >temp\\zuc21/" <temp\zuc19 >zuc20.bat
CALL zuc20.bat
sed "s/result1/result3/;s/$/\r/" <temp\zuc21 >ztmpc-3.bat
CALL ztmpc-3.bat
if exist zuc20.bat del /Q zuc20.bat
@rem 
@rem "---------------------------------                        "
@rem "Журналы"
@rem "Формирования bat-файла 'ztmpj-3.bat' со строками вида    "
@rem grep "bistatic.*airborne.*SAR" -i <dbcj\j-polarization_radar.csv >srch\j1-result3.csv
@rem ...
@rem 
sed "s/^\(.*\)$/sed \x22s\/grep -f temp\\\\tmpl\/grep \1\\x22\/\x22 <ztmpj-1.bat >temp\\zuc23/" <temp\zuc11 >zuc22.bat
CALL zuc22.bat
sed "s/result1/result3/;s/$/\r/" <temp\zuc23 >ztmpj-3.bat
CALL ztmpj-3.bat
if exist zuc22.bat del /Q zuc22.bat
@rem 
@rem "---------------------------------------------------------"
@rem "5. Формирование csv-файлов в папке 'srch'                "
@rem "с результатами выборки                                   "
@rem 
echo 5. ”®а¬Ёа®ў ­ЁҐ csv-д ©«®ў ў Ї ЇЄҐ 'srch' б аҐ§г«мв в ¬Ё ўлЎ®аЄЁ
nircmd wait 500
@rem 
@rem "-------------------------------------------              "
@rem "5.1. Удаление 'нулевых' результатов в папке 'srch'       "
FOR %%F in (srch\*.csv) DO IF /i %%~zF EQU 0 DEL /f %%F
@rem
@rem "-------------------------------------------              "
@rem "5.2. Формирование 'заголовков' к csv-файлам              "
@rem "с результатами поиска"
@rem
sed -n "H;${x;s/\n/#/g;p}" <temp\tmpl >temp\zuc24
sed "s/^#/''/" <temp\zuc24 >temp\zuc25
sed "s/#/'' €‹€ ''/g" <temp\zuc25 >temp\zuc26
sed "s/$/''\r/" <temp\zuc26 >temp\zuc27
@rem 
sed "s/^#/''/" <temp\tmpl2 >temp\zuc28
sed "s/#/'' € ''/g" <temp\zuc28 >temp\zuc29
sed "s/$/''\r/" <temp\zuc29 >temp\zuc30
@rem 
sed "s/^#/''/" <temp\tmpl3 >temp\zuc31
sed "s/#/'' € ''/g" <temp\zuc31 >temp\zuc32
sed "s/$/''\r/" <temp\zuc32 >temp\zuc33
@rem 
@rem "-------------------------------------------              "
@rem "5.3. Формирование csv-файлов с результатами выборки      "
@rem "с 'заголовками'                                          "
@rem 
ls srch\*.csv >temp\zuc34
@rem 
@rem "---------------------------------                        "
@rem "5.3.1. Конференции                                       "
@rem 
sed "/\\c/!d" <temp\zuc34 >temp\zuc35
@rem 
set Size=0
set Files=temp\zuc35
for %%F in (%Files%) do if /i %%~zF EQU %Size% del /f %%F
@rem 
if not exist temp\zuc35 goto MC2
@rem 
@rem "5.3.1.1. Вставка заголовка 'header-с' в csv-файлы        "
@rem 
FOR /F "delims=" %%i IN (temp\zuc35) DO (
echo %%i>temp\zuc36
sed "s/^\(.*\)$/cat auxs\\header-c\.txt \1 >temp\\zuc38/" <temp\zuc36 >zuc37.bat
CALL zuc37.bat
sed "s/^\(.*\)$/copy \/Y temp\\zuc38 \1 >null/" <temp\zuc36 >zuc39.bat
CALL zuc39.bat
)
@rem 
@rem "5.3.1.2. Вставка дополнительной информации в csv-файлы   "
@rem 
cat temp\zuc27 temp\zuc30 temp\zuc33 >temp\zuc40
sed = temp\zuc40 | sed "N;s/\n/\t/" >temp\zuc41
@rem 
FOR /F "delims=" %%i IN (temp\zuc35) DO (
echo %%i>temp\zuc42
cut -f1 -d- <temp\zuc42 >temp\zuc43
tr -d " [:alpha:][:punct:]" <temp\zuc43 >temp\zuc44
sed "s/$/\t\r/" <temp\zuc44 >temp\zuc45
fgrep -f temp\zuc45 <temp\zuc03 >temp\zuc46
cut -f2 -d\ <temp\zuc46 >temp\zuc47
sed "s/^\(.*\)$/''\1''\r/" <temp\zuc47 >temp\zuc48
cut -f2 -d- <temp\zuc42 >temp\zuc49
tr -d " [:alpha:][:punct:]" <temp\zuc49 >temp\zuc50
sed "s/$/\t\r/" <temp\zuc50 >temp\zuc51
fgrep -f temp\zuc51 <temp\zuc41 >temp\zuc52
cut -f2 <temp\zuc52 >temp\zuc53
paste temp\zuc48 temp\zuc53 >temp\zuc54
sed "s/^/1iђҐ§г«мв в ўлЎ®аЄЁ ў Ѓ„ /" <temp\zuc54 >temp\zuc55
sed "s/\t/ ЁбЄ®¬®Ј® б«®ў®б®зҐв ­Ёп: /" <temp\zuc55 >temp\zuc56
sed "s/$/\r/" <temp\zuc56 >temp\zuc57.sed
sed "s/^\(.*\)$/sed -i -f temp\\zuc57.sed \1\r/" <temp\zuc42 >zuc58.bat
CALL zuc58.bat
)
@rem 
@rem "---------------------------------                        "
@rem "5.3.2. Журналы                                           "
@rem 
sed "/\\j/!d" <temp\zuc34 >temp\zuc60
@rem 
set Size=0
set Files=temp\zuc60
for %%F in (%Files%) do if /i %%~zF EQU %Size% del /f %%F
@rem 
if not exist temp\zuc60 goto MC2
@rem 
@rem "5.3.2.1. Вставка заголовка 'header-j' в csv-файлы        "
@rem 
FOR /F "delims=" %%i IN (temp\zuc60) DO (
echo %%i>temp\zuc61
sed "s/^\(.*\)$/cat auxs\\header-j\.txt \1 >temp\\zuc63/" <temp\zuc61 >zuc62.bat
CALL zuc62.bat
sed "s/^\(.*\)$/copy \/Y temp\\zuc63 \1 >null/" <temp\zuc61 >zuc64.bat
CALL zuc64.bat
)
@rem 
@rem "5.3.2.2. Вставка дополнительной информации в csv-файлы   "
@rem 
FOR /F "delims=" %%i IN (temp\zuc60) DO (
echo %%i>temp\zuc65
cut -f1 -d- <temp\zuc65 >temp\zuc66
tr -d " [:alpha:][:punct:]" <temp\zuc66 >temp\zuc67
sed "s/$/\t\r/" <temp\zuc67 >temp\zuc68
fgrep -f temp\zuc68 <temp\zuc07 >temp\zuc69
cut -f2 -d\ <temp\zuc69 >temp\zuc70
sed "s/^\(.*\)$/''\1''\r/" <temp\zuc70 >temp\zuc71
cut -f2 -d- <temp\zuc65 >temp\zuc72
tr -d " [:alpha:][:punct:]" <temp\zuc72 >temp\zuc73
sed "s/$/\t\r/" <temp\zuc73 >temp\zuc74
fgrep -f temp\zuc74 <temp\zuc41 >temp\zuc75
cut -f2 <temp\zuc75 >temp\zuc76
paste temp\zuc71 temp\zuc76 >temp\zuc77
sed "s/^/1iђҐ§г«мв в ўлЎ®аЄЁ ў Ѓ„ /" <temp\zuc77 >temp\zuc78
sed "s/\t/ ЁбЄ®¬®Ј® б«®ў®б®зҐв ­Ёп: /" <temp\zuc78 >temp\zuc79
sed "s/$/\r/" <temp\zuc79 >temp\zuc80.sed
sed "s/^\(.*\)$/sed -i -f temp\\zuc80.sed \1\r/" <temp\zuc65 >zuc81.bat
CALL zuc81.bat
)
@rem 
:MJ2
@rem 
@rem "---------------------------------------------------------"
:CLEAN
@rem "6. Очистка                                               "
echo 6. ЋзЁбвЄ 
nircmd wait 500
@rem 
if exist null del /Q null
if exist ztmpc-*.bat del /Q ztmpc-*.bat
if exist ztmpj-*.bat del /Q ztmpj-*.bat
if exist zuc*.bat del /Q zuc*.bat
if exist temp\*.* del /Q temp\*.*
@rem 
@rem "---------------------------------------------------------"
:END