Thanks again, Thom. I'll keep those suggestions for future reference.
For now, I think I will stick with my original single-column approach for my script. That way, I know I am getting the correct value returned.
I'm in the process of tweaking the script to incorporate both
- the above-mentionned one-liner (global, not ARCH-specific; that might change), and
- additional flags to provide either the full, detailed, ARCH-specific repository report, and also a full, ARCH-specific summary-only which would provide, for each, the name ("Found" lines) accompanied by just the "Description:" contents.

Updated script [Version 3] to offer ARCH-specific summary-only one-liner for each repository.
Updated script [Version 4] to present ARCH-specific selector buttons in more compact 4-column array with all the identified choices.
#!/bin/bash
###
### Script to report availability of non-Distro repositories
### for user-selected Architecture (default is that of computer)
###
### The "extrepo" command offers a method which offers better
### integration of such repositories for managing and security
###
### Version 4
###
details=0
headers=0
pkgs=0
new=0
this=$$
while [ $# -gt 0 ]
do
case "${1}" in
"--verbose" )
details=1 ; shift ;;
"--brief" )
headers=1 ; shift ;;
"--titles" )
pkgs=1 ; shift ;;
"--refresh" )
new=1 ; shift ;;
* )
echo -e "\n Invalid option '${1}' specfied on command line.\n" ; exit 1 ;;
esac
done
buildMenu()
{
width=100
max=$(echo ${archOptions} | wc -w | awk '{ print $1 }' )
indx=0
echo -e "yad --title \"ACTION - Choose Architecture\" --width=600 --height=300 --form --text \"Double-Click on your selection:\n\" --columns=4 --noheaders \\"
echo -e "--column="Optn1":100 --column="Optn2":100 --column="Optn3":100 --column="Optn4":100 \\"
for arch in ${hostArch} $(echo ${archOptions} )
do
if [ ${indx} -eq ${max} ]
then
echo -e "--field=\"${arch}\":fbtn \"bash -c 'echo ${arch}'\" "
else
echo -e "--field=\"${arch}\":fbtn \"bash -c 'echo ${arch}'\" \\"
fi
indx=$(expr ${indx} + 1 )
#--field="1":fbtn "bash -c 'echo 1'" \
done
echo -e ""
}
selectArch()
{
"${men}" >"${val}" 2>>/dev/null &
yadPID=$!
yadPID=$(ps -ef | grep ${yadPID} | grep 'yad' | awk '{ print $2 }' )
#ls -l "${val}"
#echo ${yadPID}
inotifywait -m -e modify "${val}" 2>>/dev/null |
while read -r notifyline ; do
#echo "${notifyline}"
testor=$(head -1 "${val}" )
#echo "${testor}"
if [ -n "${testor}" ]
then
sync
kill -9 ${yadPID}
notifPID=$(ps -ef | grep 'inotifywait' | grep ${this} | awk '{ print $2 }' )
kill -9 ${notifPID}
break
fi
done
#choice=$(grep -v "|" "${val}" )
choice=$(head -1 "${val}" )
if [ -z "${choice}" ]
then
echo -e "\n No choice made. Process abandoned!\n" ; exit 1
fi
#echo ${choice}
}
########################################################################
########################################################################
hostArch=$( dpkg-architecture -q DEB_BUILD_ARCH )
tmp="/tmp/extrepoArch.raw.txt"
men="/tmp/extrepoArch.men.txt"
val="/tmp/extrepoArch.val.txt" ; rm -f "${val}" ; touch "${val}"
if [ ! -s "${tmp}" ]
then
new=1
fi
if [ ${new} -eq 1 ]
then
rm -f "${tmp}"
extrepo search >"${tmp}"
else
echo -e "\n Re-using recently generated raw 'extrepo' report:" >&2
ls -l "${tmp}" | awk '{ printf("\t %s\n", $0 ) ; }' >&2
if [ ${pkgs} -eq 1 ]
then
sleep 5
fi
fi
if [ ${pkgs} -eq 1 ]
then
grep '^Found' "${tmp}" | sort | sed 's+^Found ++' | sed 's+[:]$++'
exit 0
fi
archOptions=$( awk '{
posA=index( $0, "Architectures:" ) ;
if( posA > 0 ){
gsub( /Architectures: /, "", $0 ) ;
for( i=1 ; i <= NF ; i++ ){
print $i ;
} ;
} ;
}' <"${tmp}" | sort | uniq | awk -v harch="${hostArch}" '{ if( $1 != "all" && $1 != harch ){ printf("%s ", $1 ) ; } ; }' )
buildMenu >"${men}"
chmod 744 "${men}"
selectArch
if [ -z "${choice}" ]
then
echo -e "\n Process abandoneed!\n" >&2 ; exit 1
fi
####################################################################################
###
### Typical report format for repositories
###
####################################################################################
#Found sury_apache2:
#---
#description: Ondřej Surý's package repository
#gpg-key-checksum:
# sha256: 59961c0e0d9c9415c2a6b8cf7355bc48254ab53c7e1b8211b683eb459353da81
#gpg-key-file: sury_apache2.asc
#policy: main
#source:
# Architectures: amd64 armhf arm64
# Components: main
# Suites: bookworm
# Types: deb deb-src
# URIs: https://packages.sury.org/apache2
####################################################################################
awk -v heads="${headers}" -v arch="${choice}" 'BEGIN{
capture=0 ;
indx=0 ;
archCount=0 ;
descrB=0 ;
rname=0 ;
first=0 ;
split("", datLine ) ;
}{
posA=index( $0, "Architectures:" ) ;
if( posA > 0 ){
# Architectures: amd64 armhf arm64
archMatch=0 ;
rem=substr( $0, posA+15 ) ;
n=split( rem, vals ) ;
for( j=1 ; j <= n ; j++ ){
if( vals[j] == arch ){
archMatch=1 ;
break
} ;
} ;
} ;
if( heads == 1 ){
testor=substr( $0, 1, 1 ) ;
if( $0 ~ /^[a-zA-Z]/ || $0 == "---" ){
descrB=0 ;
capture=0 ;
} ;
} ;
if( index( $0, "Found" ) == 1 ){
if( archMatch == 1 && indx > 1 ){
archCount++ ;
if( heads == 1 ){
printf("%s ※ ", datLine[2] ) ;
is=3 ;
}else{
print datLine[1] ;
is=2 ;
} ;
for( i=is ; i <= indx ; i++ ){
if( heads == 1 ){
sub( /^[ ][ ]/, "", datLine[i] ) ;
printf("%s ", datLine[i] ) ;
}else{
print datLine[i] ;
} ;
} ;
if( heads == 1 ){
printf("\n") ;
} ;
archMatch=0 ;
split("", datLine ) ;
} ;
capture=1 ;
indx=1 ;
rname=1 ;
} ;
if( index( $0, "description:" ) == 1 ){
descrB=1 ;
capture=1 ;
first=1 ;
} ;
if( capture == 1 ){
indx++ ;
if( rname == 1 && heads == 1 ){
datLine[indx]=substr( $0, 7 ) ;
sub( /[:]$/, "", datLine[indx] ) ;
}else{
if( descrB == 1 && first == 1 && heads == 1 ){
datLine[indx]=substr( $0, 14 ) ;
first=0 ;
}else{
datLine[indx]=$0 ;
} ;
} ;
rname=0 ;
} ;
}END{
if( archMatch == 1 && indx > 1 ){
archCount++ ;
if( heads == 1 ){
printf("%s ※ ", datLine[2] ) ;
is=3
}else{
print datLine[1] ;
is=2
} ;
for( i=is ; i <= indx ; i++ ){
if( heads == 1 ){
sub( /^[ ][ ]/, "", datLine[i] ) ;
printf("%s ", datLine[i] ) ;
}else{
print datLine[i] ;
} ;
} ;
if( heads == 1 ){
printf("\n") ;
} ;
} ;
if( heads == 1 ){
nl1="" ;
nl2="\n" ;
}else{
nl1="\n" ;
nl2="" ;
} ;
printf("%sMatches on \"%s\" Architecture: %d\n%s", nl1, arch, archCount, nl2 ) | "cat 1>&2" ;
}' <"${tmp}" |
{
if [ ${headers} -eq 1 ]
then
sort
else
cat
fi
}
exit