И это всё МОЁ

Исходные данные

- link.txt - список ссылок на архивы различных форматов(zip, rar, tar, tar.gz), пример сторки https://www.url1.com/archive1.zip

- file.conf - имя файла, в котором ищем строки, содержащие ключи

- pattern.txt - список ключей, по которым ищем нужные строки, содержат спец.символы, пример «level('_TURBO_SKY_', 'Jungo');»

Нужно скачать архивы по списку, найти в них файл по имени, в этом файле найти строки, содержащие ключи, сохранить результат в файл и удалить архив. На данный момент получилось сделать только скачивание по списку и поиск в архиве по простым ключам, но собирает кучу мусора по 2-м причинам:

- поиск осуществляется во всем архиве, а не в конкретном файле

- ключи не точные, т.к. пришлось обрезать спецсимволы

===
#!/bin/bash
while read LINK; do
LINK=${LINK%$'\r'}
curl -o file.zip $LINK && zipgrep -H -f pattern.txt file.zip >> out.txt && rm file.zip
done < link.txt
===

Думаю, нужно распаковать архив, передать результат команде find, для поиска файла по имени, затем найти строки в файле используя grep.

===
unzip -d dir1 file.zip && find dir1 -name «file.conf» |\
while read i; do \
cat «$i» | grep -H -f pattern.txt >> out.txt && rm file.zip && rm -R dir1
done
===

Сложность в том, что архивы могут иметь разные форматы и ключи содержат спецсимволы.
Прошу сильно не ругать) Буду благодарен за любую помощь)








 , , ,