From 3e3f380830fb0a066e0d45d2c61af6bfbe296958 Mon Sep 17 00:00:00 2001 From: s0i37 Date: Fri, 27 Jun 2025 16:40:11 +0500 Subject: [PATCH] updated search.sh --- search.sh | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/search.sh b/search.sh index 78bee61..c8f60f2 100755 --- a/search.sh +++ b/search.sh @@ -1,38 +1,45 @@ #!/bin/bash GREEN=$'\x1b[32m' +YELLOW=$'\x1b[33m' RESET=$'\x1b[39m' MATCH=30 LIMIT=10 OFFSET=0 URI='%' +TYPE='%' +EXT='%' -while getopts "m:c:o:u:" opt +while getopts "u:t:e:m:c:o:" opt do case $opt in + u) URI=$OPTARG;; + t) TYPE=$OPTARG;; + e) EXT=$OPTARG;; m) MATCH=$OPTARG;; c) LIMIT=$OPTARG;; o) OFFSET=$OPTARG;; - u) URI=$OPTARG;; esac done -[[ $(($#-$OPTIND)) -lt 1 ]] && [[ $URI = '%' ]] && { +[[ $(($#-$OPTIND)) -lt 1 ]] && [[ "$URI" = '%' && "$TYPE" = '%' && "$EXT" = '%' ]] && { echo "$0 [opts] words.db QUERY" echo "opts:" + echo " -u url" + echo " -t type" + echo " -e ext" echo " -m match" echo " -c count" echo " -o offset" - echo " -u fragment" exit } DB="${@:$OPTIND:1}" shift $OPTIND -IFS='=%=' -echo "SELECT uri,text FROM words WHERE uri LIKE '$URI' and text LIKE '%$*%' limit $LIMIT offset $OFFSET;" | sqlite3 -separator '=%=' "$DB" | while read uri text +echo "SELECT uri,type,text FROM words WHERE uri LIKE '$URI' and type LIKE '$TYPE' and ext LIKE '$EXT' and text LIKE '%$*%' limit $LIMIT offset $OFFSET;" | sqlite3 -separator '%' "$DB" | while IFS='%' read uri type text do - echo $GREEN"$uri"$RESET + echo "${GREEN}$uri ${YELLOW}[$type]${RESET}" echo "$text" | grep -i -o -P ".{0,$MATCH}$*..{0,$MATCH}" | grep -i --color=auto "$*" + echo "" done