使用bash搜索sqlite3数据库

时间:2020-04-15 16:07:20

标签: bash sqlite

我正在创建一个脚本来搜索SQLite3数据库,这是一个较大项目的一部分。

脚本将搜索一个名为keyword.txt的文本文件,其中包含关键字列表(每行一个) 数组“ my_array”包含数据库中所有字段的列表,格式为“ table.field”。 执行后,我将返回匹配的文本以进行标准输出。 但是,我也希望它输出关键字存在的字段或表。

即:关键字:食用水果中发现了菠萝。

或:关键字:在field 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 :(得分:0)

这假定您在任何给定的TABLE FIELD组合上最多只能找到1个独特的水果。

如果不是这种情况,请告诉我,我将修改答案



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"