Перестановка столбцов в UNIX/Linux

Я столкнулся с такой же проблемой. И я решил это, понизив версию raspbian jessie.

http://downloads.raspberrypi.org/raspbian/images/raspbian-2017-06-23/

Удалите вашу текущую версию, возможно, raspbian-2017-07-05/и понизьте ее до raspbian-2017-06-23/. Для обновления и обновления пакетов потребуется гораздо больше времени, но для меня это работает нормально.

0
14.05.2019, 00:53
2 ответа
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,
0
28.04.2021, 23:33

Это проще, и он будет обрабатывать строки с произвольным количеством полей без добавления дополнительных запятых в конце строки. Он также будет обрабатывать строки, содержащие менее 3 полей.

    awk -F, -v OFS=, 'NF > 2 { k=$3; $3=$2; $2=$1; $1=k } { print }' test.csv

Изменение порядка полей ввода упрощает создание вывода, это просто print.

Если бы было больше значений, которые необходимо сдвинуть (, скажем, ключом было 10-е поле ), тогда использование цикла forдля этого было бы целесообразно, но для сдвига только двух полей это похоже на излишество.

0
28.04.2021, 23:33

Теги

Похожие вопросы