Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # FIND MODULE - V0.1
- # CONSTANTS
- DATABASE=$1
- MAX_LEN="12"
- # onDEPLOY
- if [[ "$DATABASE" == "module_find_deploy" ]]; then
- echo "find_deployed" > ./response.txt
- exit 0
- fi
- # Ask for query
- echo "Enter your search query."
- echo "Example: <column1=\"query1\"> [column2=\"query2\"]"
- echo -n "[INPUT]: "
- read query
- # Get sub-queries
- TRIM_QUERY="$(echo "${query}" | sed -e 's/\" /\"|/g')"
- # Get query array
- IFS="|" read -ra query_array <<< "$TRIM_QUERY"
- # Now let's get all columns names and pack them to array
- read COLS < $DATABASE
- TRIM_COLS="$(echo "${COLS}" | sed -e 's/ | /|/g')"
- #echo $TRIM_COLS
- OIFS=$IFS;
- IFS="|";
- array=($TRIM_COLS)
- IFS='|' read -ra array <<< "$TRIM_COLS"
- # Find needle column
- doubles=0
- for sub in "${!query_array[@]}"
- do
- IFS='=' read -ra query_params <<< "${query_array[sub]}"
- QP=`echo "${query_params[0]}" | tr '[A-Z]' '[a-z]'`
- for field in "${!array[@]}"
- do
- colLow=`echo "${array[field]}" | tr '[A-Z]' '[a-z]'`
- if [ "$QP" == "$colLow" ]
- then
- pr_string=`echo "${query_params[1]}" | tr '[A-Z]' '[a-z]'`
- size=${#pr_string}
- if [ "${NEEDLS[$field]}" != "" ]
- then
- #echo "Already exists";
- NEEDLS[$field]="${NEEDLS[$field]}&${pr_string:1:$size-2}"
- #echo "New field = "${NEEDLS[$field]}
- doubles=$(($doubles+1))
- else
- NEEDLS[$field]=${pr_string:1:$size-2}
- fi
- fi
- done
- done
- # SURPRISE ERROR!!
- NEED_CNT=$((${#NEEDLS[@]}+doubles))
- if [ $NEED_CNT -ne ${#query_array[@]} ]
- then
- echo "ERROR! Invalid query: WRONG_COLUMN_NAME"
- exit 1
- fi
- #for q in "${!NEEDLS[@]}"
- #do
- #echo "[$q]:${NEEDLS[q]}"
- #done
- if [ ${#NEEDLS[@]} -ne 0 ]
- then
- RESULT_COUNT=0
- while IFS='' read -r line || [ -n "$line" ]; do
- # Get one line from file
- TRIM_LINE="$(echo "${line}" | sed -e 's/ | /|/g')"
- OIFS=$IFS;
- IFS="|";
- line_array=($TRIM_LINE)
- # Trying to find needls
- PRINTED=0
- for n in "${!NEEDLS[@]}"
- do
- if [ $PRINTED -eq 1 ]
- then
- break;
- fi
- lowLine=`echo "${line_array[$n]}" | tr '[A-Z]' '[a-z]'`
- IFS="&";
- needls_arr=(${NEEDLS[n]})
- for narr in "${!needls_arr[@]}"
- do
- if [ "$lowLine" == "${needls_arr[narr]}" ]
- then
- for ((i=0;i<${#line_array[@]};i++))
- do
- #printf " %${MAX_LEN}s |" "$(echo "${line_array[$i]}" | sed -e 's/[[:space:]]//g')"
- printf " %${MAX_LEN}s |" "$(echo "${line_array[$i]}")"
- done
- printf "\n"
- RESULT_COUNT=$(($RESULT_COUNT+1))
- PRINTED=1
- break;
- fi
- done
- done
- done < $DATABASE
- if [ "$RESULT_COUNT" -eq 0 ]
- then
- echo "[INFO]: Can't find anything.. Make another query."
- else
- echo "[INFO]: Rows founded = $RESULT_COUNT"
- fi
- else
- echo "[ERROR]: No such column in this database... :("
- fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement