How to use Unix Shell to show only the first n columns and last n columns?
awk -F, '{print $1, $2, $(NF-1), $NF}' < input
More generally (per the Question's title), to print the first and last n
columns of the input -- without checking to see whether that means printing some columns twice --
awk -v n=2 '{
for(i=1; i <= n && i <= NF; i++)
printf "%s%s", $i, OFS
for(i=NF-n+1; i <= NF && i >= 1; i++)
printf "%s%s", $i, OFS
printf "%s", ORS
}' < input
(using -F
as needed for the delimiter)