Fair warning: this relies on your commas.
echo "a,b,c,d Access" | tr ,\ '[\n*]' | sed '1!G;$s/\n/,/g;s/\([^,]*\),\(.*\)/\2 \1/p;h;d'
OUTPUT
d,c,b,a Access
It's kinda long - longer than it needs to be. It's easier this way:
set -f ; IFS=,\ set -- ${0+a,b,c,d Access} while [ -n "${2+?}" ] do r="$1,$r" shift ; done echo "${r%,} $1"
OUTPUT
d,c,b,a Access
Still kinda long, but at least it makes sense. It get's a little easier with a function because you get a shell array. Like:
rev() ( i= set -f ; IFS=$1 ; shift ; set -- $* until [ "$((i=${i:=($#+1)}-1))" -eq 0 ] do [ "$i" -gt 1 ] && s=$IFS || s= eval printf '"%s$s"' \""\$$i"\" done ) rev , a,b,c,d && echo \ Access
OUTPUT
d,c,b,a Access
Or if you have it in a variable:
var="a,b,c,d Access" rev , "${var% *}" && echo " ${var##* }"
OUTPUT
d,c,b,a Access
$1 $2 $3...$n, print(rev $1) $2 $3...$n?