another list rewrite, using awk and grep

This commit is contained in:
NRK
2021-04-20 11:55:02 +06:00
parent 7b70d3aad8
commit 55c013326d

58
sxbm
View File

@ -52,8 +52,9 @@ COMMANDS:
} }
bm_list(){ bm_list(){
local QUERY_TAG="-n " local QUERY_TAG
local QUERY_TITLE="-n " local QUERY_TITLE
local QUERY_STRICT="||"
while [ -n "$1" ]; do while [ -n "$1" ]; do
case "$1" in case "$1" in
@ -62,8 +63,7 @@ bm_list(){
shift shift
;; ;;
"-s"|"--strict") "-s"|"--strict")
QUERY_TAG="" local QUERY_STRICT="&&"
QUERY_TITLE=""
shift shift
;; ;;
*) *)
@ -77,39 +77,41 @@ bm_list(){
while [ -n "$1" ]; do while [ -n "$1" ]; do
case "$1" in case "$1" in
+*) +*)
[ "${QUERY_TAG#-n}" != "$QUERY_TAG" ] && [ -z "$QUERY_TAG" ] &&
QUERY_TAG="${QUERY_TAG}-e '/[[:space:]]$1[[:space:]]/p' " || QUERY_TAG="/[[:space:]]\\$1[[:space:]]/" ||
QUERY_TAG="${QUERY_TAG}-e '/[[:space:]]$1[[:space:]]/!d' " QUERY_TAG="${QUERY_TAG} $QUERY_STRICT /[[:space:]]\\$1[[:space:]]/"
shift shift
;; ;;
*) *)
[ "${QUERY_TITLE#-n}" != "$QUERY_TITLE" ] && if [ "$QUERY_STRICT" = "&&" ]; then
QUERY_TITLE="${QUERY_TITLE}-e '/$1/p' " || [ -z "$QUERY_TITLE" ] &&
QUERY_TITLE="${QUERY_TITLE}-e '/$1/!d' " QUERY_TITLE="grep -i -e \"$1\"" ||
QUERY_TITLE="${QUERY_TITLE} | grep -i -e \"$1\""
else
[ -z "$QUERY_TITLE" ] &&
QUERY_TITLE="grep -i -e \"$1\"" ||
QUERY_TITLE="${QUERY_TITLE} -e \"$1\""
fi
shift shift
;; ;;
esac esac
done done
# TODO print the line number [ -z "$QUERY_TITLE" ] &&
# TODO fix double print if --strict not used awk --posix -v COL_LINE_NUM="$COL_LINE_NUM" \
# '/[[:space:]]+apps[[:space:]]\|[[:space:]]+lmao[[:space:]]/p' -v COL_LINK="$COL_LINK" -v COL_TITLE="$COL_TITLE" \
# TODO title search needs to exclude +tags "$QUERY_TAG { LINK=\$1; \$1=\"\";
# 's/[[:space:]]+[^[:space:]]\{1,\}//g' this kills the tags gsub(/[[:space:]]\+[^[:space:]]+/,\"\");
# TODO title search needs to be case insensitive print COL_LINE_NUM NR \") \" COL_LINK LINK \" \" COL_TITLE \$0 }" \
"$DATA_FILE"
[ "${#QUERY_TAG}" -le 3 ] && [ "${#QUERY_TITLE}" -le 3 ] && [ -n "$QUERY_TITLE" ] &&
sed "" "$DATA_FILE" awk --posix -v COL_LINE_NUM="$COL_LINE_NUM" \
-v COL_LINK="$COL_LINK" -v COL_TITLE="$COL_TITLE" \
[ "${#QUERY_TAG}" -le 3 ] && [ "${#QUERY_TITLE}" -gt 3 ] && "$QUERY_TAG { LINK=\$1; \$1=\"\";
eval sed "$QUERY_TITLE" "$DATA_FILE" gsub(/[[:space:]]\+[^[:space:]]+/,\"\");
print COL_LINE_NUM NR \") \" COL_LINK LINK \" \" COL_TITLE \$0 }" \
[ "${#QUERY_TAG}" -gt 3 ] && [ "${#QUERY_TITLE}" -le 3 ] && "$DATA_FILE" | eval "$QUERY_TITLE"
eval sed "$QUERY_TAG" "$DATA_FILE"
[ "${#QUERY_TAG}" -gt 3 ] && [ "${#QUERY_TITLE}" -gt 3 ] &&
eval sed "$QUERY_TAG" "$DATA_FILE" |
eval sed "$QUERY_TITLE"
} }
############ ############