I came up with a simple, elegant, one-line solution to a problem. This solution fixed 98% of cases it was meant to address.
The solution for the other 2% involved 40 lines of code and for loops nested 3 levels deep:
#!/usr/bin/ksh
SP="
www.xxx.yyy.zzz"
SCRIPT=$(basename $0)
SOURCE=/var/adm/scripts/SnapView
DATA=$SOURCE/data
if [[ -z $1 ]]
then
echo "###############################################"
echo "## No SID specified, exiting."
echo "## Example: $SCRIPT dev1 "
echo "###############################################"
exit 1
fi
SID=$1
OUTPUT_FILE=$DATA/${SID}_recreate.txt
HDISK_LIST=`powermt display dev=all | grep Pseudo | awk -F"=" '{print $2}'`
cp /dev/null $OUTPUT_FILE
for VG in `cat $DATA/${SID}_vg_to_lun_map.txt | awk '{print $1}'`
do
HDISK=""
for LUN in `grep $VG $DATA/${SID}_vg_to_lun_map.txt | awk '{$1=""}1'|sed 's/^ //'`
do
UID=`naviseccli -h $SP getlun $LUN | grep UID | tr -d ":" | awk '{print $2}'`
for x in $HDISK_LIST
do powermt display dev=$x | grep $UID > /dev/null && HDISK="$HDISK $x"
done
done
echo $VG $HDISK >> $OUTPUT_FILE
done