Это проще, и он будет обрабатывать строки с произвольным количеством полей без добавления дополнительных запятых в конце строки. Он также будет обрабатывать строки, содержащие менее 3 полей.
awk -F, -v OFS=, 'NF > 2 { k=$3; $3=$2; $2=$1; $1=k } { print }' test.csv
Изменение порядка полей ввода упрощает создание вывода, это просто print
.
Если бы было больше значений, которые необходимо сдвинуть (, скажем, ключом было 10-е поле ), тогда использование цикла for
для этого было бы целесообразно, но для сдвига только двух полей это похоже на излишество.