Gunah Ich würde die Liste mal Zeile für Zeile belassen, damit kann man sauberer arbeiten:
Bash
db="test"
mysql --defaults-file=/etc/mysql/debian.cnf -BN "$db" --execute="SHOW TABLES" | while read -r table
do
clean=`sed -r 's/[^A-Z0-9_.-]{1}/_/ig' <<< "$table"`
echo "» $table ($clean)"
done
Jetzt hast Du den unmaskierten Tabellennamen in $table und eine saubere Version in $clean, die man z.B. für Dateinamen verwenden kann.
Woran übergibst Du diese Werte danach? mysqldump?
Was Du auf eventuell Fall beachten musst, sind Foreign Keys! Dafür gibt es einige Stolpersteine, wenn Du einzelne Tabellen sicherst.