Самый быстрый grep для поиска строки в zip-файлах - PullRequest
0 голосов
/ 08 мая 2018

У меня есть список до 50К имен.Это мне нужно искать в журналах, которые находятся в нескольких файлах ZIP.Эти zip-файлы находятся в разных папках и огромных (до 450 ГБ).и в zip-файле есть несколько файлов.

В данный момент я выполняю итерации для каждого zip-файла и файлов журналов каждого файла и ищу в них имена.

cd /disk1/ABCDEFArchive/

while read pl; do
  echo Searching $pl

  for i in 3 3-AB 3-CD 3-EF 4 4-AB 4-CD 4-EF 5 5-AB 5-CD 5-EF 
  do
    cd web$i
    for j in 2017-09 2017-10 2017-11 2017-12 2017-01 2017-02 
    do
      for k in $(unzip -l ABCDEF-${j}.zip | awk '{print $4}' | grep ABCDEF)
      do
        echo "searching $pl in   web$i ===>>> ABCDEF-${j}.zip ===>>> $k  "
        isexists=$(unzip -p ABCDEF-${j}.zip $k  | grep "=${pl}" | head -1 )
        if [[ ! -z "$isexists" ]]; then
          mysql -e "update test.product_list_tobedeleted set foundinlogs=1 where list_name =\"${pl}\";"
      echo "$pl@@@$isexists" >>${ScriptPath}/ProductlistFound.csv
          break 3   
        fi
     done
   done 
   cd ..
  done

Но это работает оченьмедленно с месяца и все еще на 3000 имя

Я также попробовал еще несколько работ, таких как поиск в zip-файле без повторов в каждом файле журнала и т. д., но это еще хуже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...