1. @Echo off
  2. cls
  3. @rem
  4. @rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
  5. @rem "ПРИМЕР выборки рефератов публикаций на конференциях      "
  6. @rem "(н/т мероприятиях) с 1993 по 2013 гг.                    "
  7. @rem
  8. @rem "Выборка строк производится из файла базы данных (БД)     "     
  9. @rem "'c-polarization_radar.csv' в папке 'dbcj'                "
  10. @rem
  11. @rem "Критерий выборки:                                        "
  12. @rem "извлекаемые строки должны содержать словосочетания       "
  13. @rem "'bistatic' ИЛИ(И) 'airborne SAR'                         "
  14. @rem "то есть 'двухпозиционный' ИЛИ(И) 'самолетная РЛС с СА'   "
  15. @rem
  16. @rem "Шаблоны для поиска записаны в файле 'template.txt'       "
  17. @rem "в виде последовательных строк:                           "
  18. @rem bistatic
  19. @rem airborne SAR
  20. @rem
  21. @rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
  22. @rem
  23. @rem "1. Удаляем предыдущие результаты"
  24. @rem
  25. echo 1. “¤ «Ґ­ЁҐ ЇаҐ¤л¤гйЁе १г«мв в®ў
  26. nircmd wait 500
  27. @rem
  28. if exist srch\*result*.csv del /Q srch\*result*.csv
  29. @rem
  30. if exist temp\*.* del /Q temp\*.*
  31. @rem
  32. if not exist temp mkdir temp
  33. if not exist srch mkdir srch
  34. @rem
  35. @rem "---------------------------------------------------------"
  36. @rem "2. Проверяем наличие файлов БД в папке 'dbcj'            "
  37. @rem "(Если файлов нет, то выходим из обработки)               "
  38. @rem
  39. echo 2. Џа®ўҐаЄ  ­ «ЁзЁп csv-д ©«®ў Ў § ¤ ­­ле ў Ї ЇЄҐ 'dbcj'
  40. nircmd wait 500
  41. @rem
  42. ls dbcj\*.csv >temp\zuc01
  43. @rem
  44. set Size=0
  45. set Files=temp\zuc01
  46. for %%F in (%Files%) do if /i %%~zF EQU %Size% del /f %%F
  47. @rem
  48. if not exist temp\zuc01 goto CLEAN
  49. @rem
  50. @rem "---------------------------------------------------------"
  51. @rem "3. Подготовка файла 'template.txt' к выборке             "
  52. @rem "(формирование файла 'temp\tmpl')                         "
  53. @rem
  54. echo 3. Џ®¤Ј®в®ўЄ  д ©«  'template.txt' Є ўлЎ®аЄҐ
  55. nircmd wait 500
  56. @rem
  57. @rem "Удаляем множественные пробелы                            "
  58. sed "s/  */ /g" <template.txt >temp\zuf01
  59. @rem
  60. @rem "Удаляем пробелы и табуляции в конце строк                "
  61. sed "s/[ \t]*$/\r/" <temp\zuf01 >temp\zuf02
  62. @rem
  63. @rem "Удаляем пустые строки в файле 'template.txt'             "
  64. grep "."  <temp\zuf02 >temp\zuf03
  65. @rem
  66. @rem "Вставляем переносы в конце строк                         "
  67. sed "s/$/\r/" <temp\zuf03 >temp\tmpl
  68. @rem
  69. @rem "---------------------------------------------------------"
  70. @rem "4. Выборка строк в базах данных"
  71. @rem
  72. echo 4. ‚лЎ®аЄ  бва®Є ў Ў § е ¤ ­­ле
  73. nircmd wait 500
  74. @rem
  75. @rem "ЦИКЛ выборки по списку 'temp\zuc01' файлов БД"
  76. @rem
  77. @rem "-------------------------------------------              "
  78. @rem "4.1. Выборка строк. Вариант 1"
  79. @rem
  80. @rem "Из csv-файла извлекаются ВСЕ строки, содержащие          "
  81. @rem "словосочетания 'bistatic' ИЛИ 'airborne SAR'             "
  82. @rem "независимо от регистра                                   "
  83. @rem "Для этого формируются bat-файлы со строкой вида          "
  84. @rem grep -f temp\tmpl -i <dbcj\c-polarization_radar.csv >srch\c1-result1.csv
  85. @rem
  86. @rem
  87. @rem "---------------------------------                        "
  88. @rem "Конференции"
  89. @rem "Формирования bat-файла 'ztmpc-1.bat' со строками вида    "
  90. @rem grep -f temp\tmpl -i <dbcj\c-polarization_radar.csv >srch\c1-result1.csv
  91. @rem ...
  92. @rem
  93. sed "/\\c-/!d" <temp\zuc01 >temp\zuc02
  94. set Size=0
  95. set Files=temp\zuc02
  96. for %%F in (%Files%) do if /i %%~zF EQU %Size% del /f %%F
  97. @rem
  98. if not exist temp\zuc02 goto MC1
  99. @rem
  100. sed = temp\zuc02 | sed "N;s/\n/\t/" >temp\zuc03
  101. cut -f2 <temp\zuc03 >temp\zuc04
  102. sed "s/^\(.*\)$/grep -f temp\\tmpl -i <\1\ >srch\\c/" <temp\zuc04 >temp\zuc04-1
  103. cut -f1 <temp\zuc03 >temp\zuc04-2
  104. paste temp\zuc04-1 temp\zuc04-2 >temp\zuc05
  105. sed "s/\t//;s/$/-result1\.csv\r/" <temp\zuc05 >ztmpc-1.bat
  106. if exist ztmpc-1.bat CALL ztmpc-1.bat
  107. :MC1
  108. @rem
  109. @rem "---------------------------------                        "
  110. @rem "Журналы"
  111. @rem "Формирования bat-файла 'ztmpj-1.bat' со строками вида"
  112. @rem grep -f temp\tmpl -i <dbcj\j-polarimetric_radar_systems.csv >srch\j1-result1.csv
  113. @rem ...
  114. @rem
  115. sed "/\\j-/!d" <temp\zuc01 >temp\zuc06
  116. set Size=0
  117. set Files=temp\zuc06
  118. for %%F in (%Files%) do if /i %%~zF EQU %Size% del /f %%F
  119. @rem
  120. if not exist temp\zuc06 goto MJ1
  121. @rem
  122. sed = temp\zuc06 | sed "N;s/\n/\t/" >temp\zuc07
  123. cut -f2 <temp\zuc07 >temp\zuc08
  124. sed "s/^\(.*\)$/grep -f temp\\tmpl -i <\1\ >srch\\j/" <temp\zuc08 >temp\zuc08-1
  125. cut -f1 <temp\zuc07 >temp\zuc08-2
  126. paste temp\zuc08-1 temp\zuc08-2 >temp\zuc09
  127. sed "s/\t//;s/$/-result1\.csv\r/" <temp\zuc09 >ztmpj-1.bat
  128. if exist ztmpj-1.bat CALL ztmpj-1.bat
  129. :MJ1
  130. @rem
  131. @rem "-------------------------------------------              "
  132. @rem "4.2. Выборка строк. Вариант 2                            "
  133. @rem
  134. @rem "Извлекаются ВСЕ строки, содержащие словосочетания        "
  135. @rem "'bistatic' И 'airborne SAR'                              "
  136. @rem "Результат выборки записывается в файл 'result2.csv'      "
  137. @rem
  138. @rem "---------------------------------                        "
  139. @rem "Формирование файла 'temp\tmpl2'                          "
  140. sed -n "H;${x;s/\n/#/g;p}" <temp\tmpl >temp\tmpl2
  141. @rem
  142. @rem "---------------------------------                        "
  143. @rem "Конференции                                              "
  144. @rem "Формирования bat-файла 'ztmpc-2.bat' со строками вида    "
  145. @rem grep "bistatic.*airborne SAR" -i <dbcj\c-polarization_radar.csv >srch\c1-result2.csv
  146. @rem
  147. sed "s/^#/\\x22/" <temp\tmpl2 >temp\zuc10
  148. sed "s/#/\.\*/" <temp\zuc10 >temp\zuc11
  149. @rem
  150. sed "s/^\(.*\)$/sed \x22s\/grep -f temp\\\\tmpl\/grep \1\\x22\/\x22 <ztmpc-1.bat >temp\\zuc13/" <temp\zuc11 >zuc12.bat
  151. CALL zuc12.bat
  152. sed "s/result1/result2/;s/$/\r/" <temp\zuc13 >ztmpc-2.bat
  153. CALL ztmpc-2.bat
  154. if exist zuc12.bat del /Q zuc12.bat
  155. @rem
  156. @rem "---------------------------------                        "
  157. @rem "Журналы                                                  "
  158. @rem "Формирования bat-файла 'ztmpj-2.bat' со строками вида    "
  159. @rem grep "bistatic.*airborne SAR" -i <dbcj\j-polarization_radar.csv >srch\j1-result2.csv
  160. @rem ...
  161. @rem
  162. sed "s/^\(.*\)$/sed \x22s\/grep -f temp\\\\tmpl\/grep \1\\x22\/\x22 <ztmpj-1.bat >temp\\zuc15/" <temp\zuc11 >zuc14.bat
  163. CALL zuc14.bat
  164. sed "s/result1/result2/;s/$/\r/" <temp\zuc15 >ztmpj-2.bat
  165. CALL ztmpj-2.bat
  166. if exist zuc14.bat del /Q zuc14.bat
  167. @rem
  168. @rem "-------------------------------------------              "
  169. @rem "4.3. Выборка строк. Вариант 3                            "
  170. @rem
  171. @rem "Извлекаются ВСЕ строки, содержащие словосочетания        "
  172. @rem "'bistatic' И 'airborne' И 'SAR'                          "
  173. @rem "Результат выборки записывается в файл 'result3.csv'      "
  174. @rem
  175. @rem "---------------------------------                        "
  176. @rem "Формирование файла 'temp\tmpl3'                          "
  177. sed "s/ /#/g" <temp\tmpl >temp\zuc16
  178. @rem
  179. sed -n "H;${x;s/\n/#/g;p}" <temp\zuc16 >temp\zuc17
  180. @rem
  181. sed "s/$/\r/g" <temp\zuc17 >temp\tmpl3
  182. @rem
  183. @rem "---------------------------------                        "
  184. @rem "Конференции                                              "
  185. @rem "Формирования bat-файла 'ztmpc-3.bat' со строками вида    "
  186. @rem grep "bistatic.*airborne.*SAR" -i <dbcj\c-polarization_radar.csv >srch\c1-result3.csv
  187. @rem
  188. sed "s/^#/\\x22/" <temp\tmpl3 >temp\zuc18
  189. sed "s/#/\.\*/g" <temp\zuc18 >temp\zuc19
  190. @rem
  191. sed "s/^\(.*\)$/sed \x22s\/grep -f temp\\\\tmpl\/grep \1\\x22\/\x22 <ztmpc-1.bat >temp\\zuc21/" <temp\zuc19 >zuc20.bat
  192. CALL zuc20.bat
  193. sed "s/result1/result3/;s/$/\r/" <temp\zuc21 >ztmpc-3.bat
  194. CALL ztmpc-3.bat
  195. if exist zuc20.bat del /Q zuc20.bat
  196. @rem
  197. @rem "---------------------------------                        "
  198. @rem "Журналы"
  199. @rem "Формирования bat-файла 'ztmpj-3.bat' со строками вида    "
  200. @rem grep "bistatic.*airborne.*SAR" -i <dbcj\j-polarization_radar.csv >srch\j1-result3.csv
  201. @rem ...
  202. @rem
  203. sed "s/^\(.*\)$/sed \x22s\/grep -f temp\\\\tmpl\/grep \1\\x22\/\x22 <ztmpj-1.bat >temp\\zuc23/" <temp\zuc11 >zuc22.bat
  204. CALL zuc22.bat
  205. sed "s/result1/result3/;s/$/\r/" <temp\zuc23 >ztmpj-3.bat
  206. CALL ztmpj-3.bat
  207. if exist zuc22.bat del /Q zuc22.bat
  208. @rem
  209. @rem "---------------------------------------------------------"
  210. @rem "5. Формирование csv-файлов в папке 'srch'                "
  211. @rem "с результатами выборки                                   "
  212. @rem
  213. echo 5. ”®а¬Ёа®ў ­ЁҐ csv-д ©«®ў ў Ї ЇЄҐ 'srch' б १г«мв в ¬Ё ўлЎ®аЄЁ
  214. nircmd wait 500
  215. @rem
  216. @rem "-------------------------------------------              "
  217. @rem "5.1. Удаление 'нулевых' результатов в папке 'srch'       "
  218. FOR %%F in (srch\*.csv) DO IF /i %%~zF EQU 0 DEL /f %%F
  219. @rem
  220. @rem "-------------------------------------------              "
  221. @rem "5.2. Формирование 'заголовков' к csv-файлам              "
  222. @rem "с результатами поиска"
  223. @rem
  224. sed -n "H;${x;s/\n/#/g;p}" <temp\tmpl >temp\zuc24
  225. sed "s/^#/''/" <temp\zuc24 >temp\zuc25
  226. sed "s/#/'' �‹� ''/g" <temp\zuc25 >temp\zuc26
  227. sed "s/$/''\r/" <temp\zuc26 >temp\zuc27
  228. @rem
  229. sed "s/^#/''/" <temp\tmpl2 >temp\zuc28
  230. sed "s/#/'' � ''/g" <temp\zuc28 >temp\zuc29
  231. sed "s/$/''\r/" <temp\zuc29 >temp\zuc30
  232. @rem
  233. sed "s/^#/''/" <temp\tmpl3 >temp\zuc31
  234. sed "s/#/'' � ''/g" <temp\zuc31 >temp\zuc32
  235. sed "s/$/''\r/" <temp\zuc32 >temp\zuc33
  236. @rem
  237. @rem "-------------------------------------------              "
  238. @rem "5.3. Формирование csv-файлов с результатами выборки      "
  239. @rem "с 'заголовками'                                          "
  240. @rem
  241. ls srch\*.csv >temp\zuc34
  242. @rem
  243. @rem "---------------------------------                        "
  244. @rem "5.3.1. Конференции                                       "
  245. @rem
  246. sed "/\\c/!d" <temp\zuc34 >temp\zuc35
  247. @rem
  248. set Size=0
  249. set Files=temp\zuc35
  250. for %%F in (%Files%) do if /i %%~zF EQU %Size% del /f %%F
  251. @rem
  252. if not exist temp\zuc35 goto MC2
  253. @rem
  254. @rem "5.3.1.1. Вставка заголовка 'header-с' в csv-файлы        "
  255. @rem
  256. FOR /F "delims=" %%i IN (temp\zuc35) DO (
  257. echo %%i>temp\zuc36
  258. sed "s/^\(.*\)$/cat auxs\\header-c\.txt \1 >temp\\zuc38/" <temp\zuc36 >zuc37.bat
  259. CALL zuc37.bat
  260. sed "s/^\(.*\)$/copy \/Y temp\\zuc38 \1 >null/" <temp\zuc36 >zuc39.bat
  261. CALL zuc39.bat
  262. )
  263. @rem
  264. @rem "5.3.1.2. Вставка дополнительной информации в csv-файлы   "
  265. @rem
  266. cat temp\zuc27 temp\zuc30 temp\zuc33 >temp\zuc40
  267. sed = temp\zuc40 | sed "N;s/\n/\t/" >temp\zuc41
  268. @rem
  269. FOR /F "delims=" %%i IN (temp\zuc35) DO (
  270. echo %%i>temp\zuc42
  271. cut -f1 -d- <temp\zuc42 >temp\zuc43
  272. tr -d " [:alpha:][:punct:]" <temp\zuc43 >temp\zuc44
  273. sed "s/$/\t\r/" <temp\zuc44 >temp\zuc45
  274. fgrep -f temp\zuc45 <temp\zuc03 >temp\zuc46
  275. cut -f2 -d\ <temp\zuc46 >temp\zuc47
  276. sed "s/^\(.*\)$/''\1''\r/" <temp\zuc47 >temp\zuc48
  277. cut -f2 -d- <temp\zuc42 >temp\zuc49
  278. tr -d " [:alpha:][:punct:]" <temp\zuc49 >temp\zuc50
  279. sed "s/$/\t\r/" <temp\zuc50 >temp\zuc51
  280. fgrep -f temp\zuc51 <temp\zuc41 >temp\zuc52
  281. cut -f2 <temp\zuc52 >temp\zuc53
  282. paste temp\zuc48 temp\zuc53 >temp\zuc54
  283. sed "s/^/1iђҐ§г«мв в ўлЎ®аЄЁ ў Ѓ„ /" <temp\zuc54 >temp\zuc55
  284. sed "s/\t/ ЁбЄ®¬®Ј® б«®ў®б®зҐв ­Ёп: /" <temp\zuc55 >temp\zuc56
  285. sed "s/$/\r/" <temp\zuc56 >temp\zuc57.sed
  286. sed "s/^\(.*\)$/sed -i -f temp\\zuc57.sed \1\r/" <temp\zuc42 >zuc58.bat
  287. CALL zuc58.bat
  288. )
  289. @rem
  290. @rem "---------------------------------                        "
  291. @rem "5.3.2. Журналы                                           "
  292. @rem
  293. sed "/\\j/!d" <temp\zuc34 >temp\zuc60
  294. @rem
  295. set Size=0
  296. set Files=temp\zuc60
  297. for %%F in (%Files%) do if /i %%~zF EQU %Size% del /f %%F
  298. @rem
  299. if not exist temp\zuc60 goto MC2
  300. @rem
  301. @rem "5.3.2.1. Вставка заголовка 'header-j' в csv-файлы        "
  302. @rem
  303. FOR /F "delims=" %%i IN (temp\zuc60) DO (
  304. echo %%i>temp\zuc61
  305. sed "s/^\(.*\)$/cat auxs\\header-j\.txt \1 >temp\\zuc63/" <temp\zuc61 >zuc62.bat
  306. CALL zuc62.bat
  307. sed "s/^\(.*\)$/copy \/Y temp\\zuc63 \1 >null/" <temp\zuc61 >zuc64.bat
  308. CALL zuc64.bat
  309. )
  310. @rem
  311. @rem "5.3.2.2. Вставка дополнительной информации в csv-файлы   "
  312. @rem
  313. FOR /F "delims=" %%i IN (temp\zuc60) DO (
  314. echo %%i>temp\zuc65
  315. cut -f1 -d- <temp\zuc65 >temp\zuc66
  316. tr -d " [:alpha:][:punct:]" <temp\zuc66 >temp\zuc67
  317. sed "s/$/\t\r/" <temp\zuc67 >temp\zuc68
  318. fgrep -f temp\zuc68 <temp\zuc07 >temp\zuc69
  319. cut -f2 -d\ <temp\zuc69 >temp\zuc70
  320. sed "s/^\(.*\)$/''\1''\r/" <temp\zuc70 >temp\zuc71
  321. cut -f2 -d- <temp\zuc65 >temp\zuc72
  322. tr -d " [:alpha:][:punct:]" <temp\zuc72 >temp\zuc73
  323. sed "s/$/\t\r/" <temp\zuc73 >temp\zuc74
  324. fgrep -f temp\zuc74 <temp\zuc41 >temp\zuc75
  325. cut -f2 <temp\zuc75 >temp\zuc76
  326. paste temp\zuc71 temp\zuc76 >temp\zuc77
  327. sed "s/^/1iђҐ§г«мв в ўлЎ®аЄЁ ў Ѓ„ /" <temp\zuc77 >temp\zuc78
  328. sed "s/\t/ ЁбЄ®¬®Ј® б«®ў®б®зҐв ­Ёп: /" <temp\zuc78 >temp\zuc79
  329. sed "s/$/\r/" <temp\zuc79 >temp\zuc80.sed
  330. sed "s/^\(.*\)$/sed -i -f temp\\zuc80.sed \1\r/" <temp\zuc65 >zuc81.bat
  331. CALL zuc81.bat
  332. )
  333. @rem
  334. :MJ2
  335. @rem
  336. @rem "---------------------------------------------------------"
  337. :CLEAN
  338. @rem "6. Очистка                                               "
  339. echo 6. ЋзЁбвЄ 
  340. nircmd wait 500
  341. @rem
  342. if exist null del /Q null
  343. if exist ztmpc-*.bat del /Q ztmpc-*.bat
  344. if exist ztmpj-*.bat del /Q ztmpj-*.bat
  345. if exist zuc*.bat del /Q zuc*.bat
  346. if exist temp\*.* del /Q temp\*.*
  347. @rem
  348. @rem "---------------------------------------------------------"
  349. :END