我正在创建一个脚本来搜索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"
答案 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"