From 83d36298591944ab581e9fe601a1314f0704abbb Mon Sep 17 00:00:00 2001 From: Michael Clemens Date: Mon, 9 Nov 2020 22:30:41 +0100 Subject: [PATCH] moved from grep to sed -> works now on NetBSD --- qrz.sh | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/qrz.sh b/qrz.sh index b97eb4f..1261b66 100755 --- a/qrz.sh +++ b/qrz.sh @@ -39,7 +39,8 @@ call=$1 session_xml=$(curl -s -X GET 'http://xmldata.qrz.com/xml/current/?username='${user}';password='${password}';agent=qrz_sh') # check for login errors -e=$(printf %s "$session_xml" | grep -oP "(?<=).*?(?=)" ) +#e=$(printf %s "$session_xml" | grep -oP "(?<=).*?(?=)" ) # only works with GNU grep +e=$(printf %s "$session_xml" | awk -v FS="(|<\/Error>)" '{print $2}' | sed -e ':a' -e 'N' -e '$!ba' -e 's/\n//g') if [ "$e" != "" ] then echo "The following error has occured: $e" @@ -47,15 +48,26 @@ if [ "$e" != "" ] fi # extract session key from response -session_key=$(printf %s "$session_xml" |grep -oP '(?<=).*?(?=)') +#session_key=$(printf %s "$session_xml" |grep -oP '(?<=).*?(?=)') # only works with GNU grep +session_key=$(printf %s "$session_xml" | awk -v FS="(|<\/Key>)" '{print $2}' | sed -e ':a' -e 'N' -e '$!ba' -e 's/\n//g') # lookup callsign at qrz.com lookup_result=$(curl -s -X GET 'http://xmldata.qrz.com/xml/current/?s='${session_key}';callsign='${call}'') +# check for login errors +#e=$(printf %s "$lookup_result" | grep -oP "(?<=).*?(?=)" ) # only works with GNU grep +e=$(printf %s "$lookup_result" | awk -v FS="(|<\/Error>)" '{print $2}' | sed -e ':a' -e 'N' -e '$!ba' -e 's/\n//g') +if [ "$e" != "" ] + then + echo "$e" + exit + fi + # grep field values from xml and put them into variables for f in "call" "fname" "name" "addr1" "addr2" "country" "grid" "email" "user" "lotw" "mqsl" "eqsl" "qslmgr" do - z=$(printf %s "$lookup_result" | grep -oP "(?<=<${f}>).*?(?=)" ) + #z=$(printf %s "$lookup_result" | grep -oP "(?<=<${f}>).*?(?=)" ) # only works with GNU grep + z=$(printf %s "$lookup_result" | awk -v FS="(<${f}>|<\/${f}>)" '{print $2}' | sed -e ':a' -e 'N' -e '$!ba' -e 's/\n//g') eval "$f='${z}'"; done