Я столкнулся с такой же проблемой. И я решил это, понизив версию raspbian jessie.
http://downloads.raspberrypi.org/raspbian/images/raspbian-2017-06-23/
Удалите вашу текущую версию, возможно, raspbian-2017-07-05/
и понизьте ее до raspbian-2017-06-23/
. Для обновления и обновления пакетов потребуется гораздо больше времени, но для меня это работает нормально.
awk -F',' '{print $3 "," $1 "," $2 "," $4 "," $5}' test1.csv
вывод
FH,10,,1834,1010
BH,11,10,9899,1010
TH, 21,11,1010,345
DA, 22,11,34.65,
DA, 23,11,76.89,
CC, 24,11,1010,
CC, 25,11,1011 ,
FT,13,10,200.68,
Этот вариант вашего скрипта может пролить свет на ваш конец -из -проблемы со строкой
awk -F',' -v OFS=, '{printf "%s",$3 OFS; for(i=1;i<=NF;i++) if(i!=3) printf "%s",$i OFS;print ""}' test1.csv
вывод
FH,10,,1834,1010,
BH,11,10,9899,1010,
TH, 21,11,1010,345,
DA, 22,11,34.65,
DA, 23,11,76.89,
CC, 24,11,1010,
CC, 25,11,1011 ,
FT,13,10,200.68,
Это проще, и он будет обрабатывать строки с произвольным количеством полей без добавления дополнительных запятых в конце строки. Он также будет обрабатывать строки, содержащие менее 3 полей.
awk -F, -v OFS=, 'NF > 2 { k=$3; $3=$2; $2=$1; $1=k } { print }' test.csv
Изменение порядка полей ввода упрощает создание вывода, это просто print
.
Если бы было больше значений, которые необходимо сдвинуть (, скажем, ключом было 10-е поле ), тогда использование цикла for
для этого было бы целесообразно, но для сдвига только двух полей это похоже на излишество.