Поиск в базе данных sqlite3 с использованием bash - PullRequest
1 голос
/ 15 апреля 2020

Я создаю скрипт для поиска в базе данных SQLite3 в рамках более крупного проекта.

Скрипт будет искать текстовый файл keyword.txt, который содержит список ключевых слов (по одному в каждой строке) Массив "my_array" содержит список всех полей в базе данных в формате "table.field". После выполнения я получаю возвращенный текст в стандартный вывод. Тем не менее, я также хотел бы вывести в поле или в таблице, что ключевое слово (а) существует.

ie: Ключевое слово: ананас найден в таблице фруктов.

или: Ключевое слово: ананас найден в поле fruit.name


for FIELD in "${my_array[@]}"
do
        TABLE=$(echo $FIELD | awk -F'.' '{print$1}')
        sqlite3 database.db 'Select '${FIELD}' from '$TABLE'' | egrep -i -o -n --color -f keyword.txt

done

printf "\nSCANNING COMPLETE\n"

1 Ответ

0 голосов
/ 16 апреля 2020

Предполагается, что вы можете найти не более 1 уникального фрукта в любой комбинации TABLE FIELD.

Если это не так, пожалуйста, дайте мне знать, и я изменю ответ



for FIELD in "${my_array[@]}"
do
        TABLE=$(echo $FIELD | awk -F'.' '{print$1}')
        sqlite3 database.db 'Select '${FIELD}' from '$TABLE'' | egrep -i -o -n --color -f keyword.txt
        FOUND=`sqlite3 database.db 'Select '${FIELD}' from '$TABLE'' | egrep -i -o -n --color -f keyword.txt"`
        if [ -z "$FOUND" ]
        then
          echo "nothing found" >> /dev/null
        else
          echo "$FOUND found in field $TABLE.$FIELD"
fi
done
printf "\nSCANNING COMPLETE\n"

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