From ed043476bd7310a16a69b3c46b506b611f6f39a0 Mon Sep 17 00:00:00 2001 From: Pekka Helenius Date: Fri, 8 May 2020 14:31:59 +0300 Subject: [PATCH] Fix findinpkg.sh script --- tools/findinpkg.sh | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/tools/findinpkg.sh b/tools/findinpkg.sh index 429bc63..b0038d8 100755 --- a/tools/findinpkg.sh +++ b/tools/findinpkg.sh @@ -9,7 +9,7 @@ function help() { exit } -if [[ $# -ne 2 ]]; then +if [[ ${#@} -ne 2 ]]; then help fi @@ -25,29 +25,27 @@ lines_total=0 files_total=0 esc=$(printf '\033') -separate() { - linenro=$(printf '%s' ${1} | sed -r 's/^.*?:([0-9]+$)/\1/') - filename_=$(printf '%s' ${1} | sed -r 's/^(.*?):[0-9]+$/\1/') - - if [[ "${filename}" == "" ]]; then filename=${filename_}; fi - - let lines_total++ - if [[ ! "${filename}" == "${filename_}" ]]; then - echo "${esc}[35m${filename}${esc}[92m: ${esc}[31m${lines[*]}${esc}[0m" - let files_total++ - lines=() - fi - filename="${filename_}" - lines+=(${linenro}) - let lines_total++ -} - for file in $(pacman -Ql "${1}" | sed "s/^${1}\s//g"); do if [[ -f "${file}" ]]; then + line=$(grep --line-number --with-filename --binary-files=without-match -i "${2}" "${file}" | sed -r "s/^(.*?:)([0-9]+):.*/\1\2/g") + for l in ${line[@]}; do - separate "${l}" + + linenum=$(printf '%s' ${l} | sed -r 's/^.*?:([0-9]+$)/\1/') + filename_=$(printf '%s' ${l} | sed -r 's/^(.*?):[0-9]+$/\1/') + + lines+=(${linenum}) + + if [[ ! "${filename}" == "${filename_}" ]]; then + echo "${esc}[35m${filename_}${esc}[92m: ${esc}[31m${lines[*]}${esc}[0m" + lines_total=$(( ${lines_total} + ${#lines[@]} )) + let files_total++ + lines=() + fi + + filename="${filename_}" done fi done -printf "\nFound %d matching lines for pattern '%s' in %d files in %s package.\n" ${lines_total} "${2}" ${files_total} "${1}" +printf "\nFound %d matching lines for pattern '%s' in %d files in package '%s'.\n\n" ${lines_total} "${2}" ${files_total} "${1}"