diff --git a/cli/paperfind.sh b/cli/paperfind.sh index b1d6eb3..0e2ae7c 100755 --- a/cli/paperfind.sh +++ b/cli/paperfind.sh @@ -200,12 +200,19 @@ Q) if [ ${#words[*]} -gt 0 ] && [ -n "$found" ]; then # This is an AND tmpf="$( - eval grep -Ho "'>[^<>]*/dev/null \ - | sed 's##g;s#&#\&#g')" + { find ${found//|/} -name extra.txt -type f -print | xargs --no-run-if-empty grep -HoE '\w+' + eval grep -Ho "'>[^<>]*/dev/null \ + | sed 's###;s#<#<#g;s#>#>#g;s#&#\&#g' + } | sort -u | awk -F: ' + $1==prevf { prevm=prevm " " $2 } + $1!=prevf && NR>1 { printf("%s: %s\n", prevf, prevm) } + $1!=prevf { prevf=$1; prevm=$2 } + END { if (prevm!="") printf("%s: %s\n", prevf, prevm) } + ')" for w in "${words[@]}"; do tmpf="$(grep -hF${q_ci:+i}e "$w" <<<"$tmpf")" done - found="$(cut -d: -f1 <<<"$tmpf" | sed 's#paper\.[0-9]*\.words$#|#' | sort -u)" + found="$(cut -d: -f1 <<<"$tmpf" | sed 's#/[^/]*$#/|#' | sort -u)" ## That would be an OR (for later, perhaps) #found="$( # eval grep -Ho "'>[^<>]*/dev/null \