Моя цель - переформатировать имена от Last First Middle ( LFM ) до First Middle Last ( FML ), которые являются частью большой строки. Вот некоторые примеры данных:
Имя, Адрес1, Адрес2
Смит Джо М, 123 Apple Rd, Paris TX
Адамс Кит Рэндалл, 543 1-я улица, Салинас, Калифорния
Цена Тиффани, 11232, 32-я улица, Нью-Йорк, Нью-Йорк.
Walker Karen E F, 98 West Ave, Denver CO
Что бы я хотел:
Имя, адрес1, адрес2
Джо М Смит , 123 Apple Rd, Париж
TX
Кит Рэндалл Адамс , 543 1-я улица, Салинас, Калифорния
Tiffany Цена , 11232, 32-я улица, Нью-Йорк, Нью-Йорк.
Karen E F
Уокер , West West Ave 98, Денвер, Колорадо
Я знаю, как изменить порядок первого столбца, но в итоге я отбрасываю остальные данные строки:
# Return the first colum via comma seperation (name), then seperate by spaces
# If there are two strings but not three (only a last and first name),
# then change the order to first last.
awk -F, '{print $1}'| awk -F" " '$2!="" && $3=="" {print $2,$1}' >> names.txt
awk -F, '{print $1}'| awk -F" " '$3!="" && $4=="" {print $3,$1,$2}' >> names.txt
...# Continue to iterate column numbers
Если есть более простой способ поместить последнюю найденную строку и переместить ее вперед, я бы хотел услышать об этом, но вот мой реальный интерес ...
Моя проблема заключается в том, что я хочу изменить порядок полей, разделенных пробелами, в 1-м поле, разделенном запятыми (что я делал выше), , но затем также распечатать остальные данные, разделенные запятыми.
Есть ли способ сохранить информацию об адресе в переменной и добавить ее после разделенных пробелами имен?
В качестве альтернативы, я могу сделать какое-то вложенное разбиение?
В настоящее время я делаю это с помощью awk в bash, но хочу использовать python / pandas или любые другие эффективные методы.
Спасибо за помощь!