Оболочка возможно, чтобы объединить поиск переменной и замены подстроения

underline() { printf '%s\n%.*s\n' "$1" ${#1} "${1//?/${2:--}}"; }
SAMER SAEID