Intereting Posts
Пакетное преобразование ISO / WAV / CUE обратно в BIN / CUE удалить завершающие нули в awk не работает. ошибка синтаксиса простой bash while loop создает нежелательный файл с именем 0 Замените в верхнем регистре на нижний регистр, кроме первой буквы каждого слова в определенной строке Какой в ​​настоящее время рекомендуется установить node.js на Debian? Как печатать переменные и значения оболочки для их копирования и вставки? Как запустить mutt через ssh без прохождения интерактивной оболочки Как найти версию Java в установленной папке Java? Случайное удаление важных библиотек Как сделать нераспределенное пространство «существующим»? Доступ к двум сетям невозможен одновременно Назначение пути статического устройства Сколько различных способов вы можете создать «псевдоним» в Bash? Позволяет ли Linux выполнить команду «rm -rf /»? Список завершения автозапуска Zsh в файл или меньше

Колонки заказов в файле CSV

Я пытаюсь упорядочить все столбцы по имени столбца в файле csv. У меня есть что-то вроде этого:

name ,adress ,mobile-number Ane ,USA ,12121212 Joane ,England ,234234 

и мне нужен результат

 adress ,name ,mobile-number USA ,Ane ,12121212 England,Joane ,234234 

Проблема в том, что у меня больше трех столбцов, и я не знаю, какой порядок они приходят, но мне нужно переупорядочить их в порядке возрастания.

Мы можем преобразовать столбцы в строки с помощью утилиты rs исходящей из BSD Unix, а затем просто sort строки (таким образом, эффективно сортируя столбцы исходных данных), а затем снова переносить.

Во-первых, обратите внимание, что в алфавитном порядке это: адрес, номер мобильного телефона, имя. M перед N!

Шаг за шагом:

 $ cat data name ,adress ,mobile-number Ane ,USA ,12121212 Joane ,England ,234234 $ rs -s, -C, -T < data name ,Ane ,Joane , adress ,USA ,England , mobile-number,12121212,234234, $ rs -s, -C, -T < data | sort adress ,USA ,England , mobile-number,12121212,234234, name ,Ane ,Joane , $ rs -s, -C, -T < data | sort | rs -s, -C, -T adress ,mobile-number,name , USA ,12121212,Ane , England ,234234,Joane , $ rs -s, -C, -T < data | sort | rs -s, -S' ' -T adress mobile-number name USA 12121212 Ane England 234234 Joane 

В заключение:

 $ rs -s, -C, -T < data | sort | rs -s, -S' ' -T | sed -e 's/ \([^ ]\)/,\1/g' adress ,mobile-number ,name USA ,12121212 ,Ane England ,234234 ,Joane 

Я сделал это на Ubuntu GNU / Linux и сначала должен был выполнить sudo apt-get install rs .