Вы можете попробовать проверить, зарегистрированы ли ваши устройства (с )под /dev/serial/by -id/
ls -l /dev/serial/by-id
Эти имена должны быть согласованы и указывать (символическую ссылку )на правильный ttyUSBx
awk 'BEGIN{FS=OFS=","}{gsub(/../,"&,",$NF)}1' file
BEGIN{FS=OFS=","}
устанавливает разделители полей в ,
. {gsub(/../,"&,",$NF)}
добавляет ,
к каждым 2 символам в последнем поле($NF
). 1
печатает результирующую строку. Результат:
MA,30009,4,4,00,00,10,00,01,11,10,10,11,11,10,00,11,01,00,00,00,00,
Если вы хотите удалить завершающую запятую, созданную приведенной выше командой, удалите ее с помощью дополнительной функции sub
:
awk 'BEGIN{FS=OFS=","}{gsub(/../,"&,",$NF);sub(/,$/,"",$NF)}1' file
MA,30009,4,4,00,00,10,00,01,11,10,10,11,11,10,00,11,01,00,00,00,00
Вы можете использовать Sed с циклом:
$ sed -E -e :a -e 's/(,[^,]{2})([^,]{1,})$/\1,\2/;ta' file
MA,30009,4,4,00,00,10,00,01,11,10,10,11,11,10,00,11,01,00,00,00,00
ME,30067,3,2,00,00,10,00,01,11,10,10,11,11,10,00,11,01,00,00,00,00
MI,30032,7,8,00,00,10,00,01,11,10,10,11,11,10,00,11,01,00,00,00,00
(У меня есть ощущение, что есть более аккуратный способ сделать это, начиная с $
и работая в обратном направлении -, но я не могу понять, как это ). Режим-E
(расширенного регулярного выражения )не является обязательным -, он просто упрощает экранирование.
Альтернативно с Perl:
$ perl -F, -lne '$last = pop @F; print join ",", @F, $last =~ m/(..)/g' file
MA,30009,4,4,00,00,10,00,01,11,10,10,11,11,10,00,11,01,00,00,00,00
ME,30067,3,2,00,00,10,00,01,11,10,10,11,11,10,00,11,01,00,00,00,00
MI,30032,7,8,00,00,10,00,01,11,10,10,11,11,10,00,11,01,00,00,00,00