Если выполнить
sort --field-separator="," -k2 -n file.csv > sorted.csv
То по идее в sorted.csv должны быть отсортированные данные по 2-му полю, но это не работает потому что в ковычках содержатся запятые. Как это можно решить.
В итоге хочу получить файл
Сначала придётся поменять запятые внутри кавычек на что-нибудь другое, потом отсортировать, а потом заменить заменитель кавычек обратно на кавычки. Короче, sed с регэкспами поможет.
Saboteur,
спасиб,понял ,НО
почему с ключём -n не работает ,в чём подвох?
"FIELD_6, 2, 3", 2 ,"xxx, 2", второй
"FIELD_5, 3, 3", третий
"FIELD_1",1 ,"xxx, 2", первый
Saboteur,
а ,я понял ,во второй строке всего две ячейки,
а можно это игнорировать,
допустим у меня несколько строк с разным кол-вом ячеек 1-10 ,
но нисмотря на это мне нужно как то упорядочить их по последнему значению или по 3,
а так получается,что не просто пропускает строку,где этой ячейки нет,
но и остальные строки тоже не обрабатывает.
или sort - это простая команда и это не для неё задача?
в двух словах,если не трудно,
Спасибо
зы
если в примере за разделитель берём " ,
то думаю правильнее использовать с ключом -b (игнор пробелов ) ?
вдруг там его нет или наоборот 2-3 .
иль не правильно?
сорт простая команда, основная задача - сортировать строки.
То, что он еще умеет сортировать числа, да еще и по столбцам - это вообще прекрасно, но что-то сложное нужно разбирать чем-нибудь другим.
Например через awk переделать строку таким образом, чтобы искомый столбец был первым. И сортировать сортом уже по первому столбцу, который есть везде.
p.s. В примере мы используем ключ -n (сортировать по числам). В процессе преобразования куска строки в число, пробелы и так отсекутся.
да вроде всё работает -попробовал (сам учусь),я даже код не писал,твой copy/past-ил.
то что содержится в кавычках "" ,читается как единая строка/символ. -ЛОЖЬ
единственное/возможно ,предварительно сам csv нужно разбить на строки,
или там каждое значение/парамет FILD идёт с новой строки?
тогда должно работать
SOTVM, Да, так работает. Но что делать если в csv файле самые разные данные которые не ограничиваются таким порядком запятых?
Такой пример работать не будет:
Win332,
мне кажется сперва нужно проти sed|awk
заменить/подставить/дополнить свой уникальный маркер разделителя
потом по нему отсортировать
потом удалить маркер
тады ему/ей команде sort будет пок на "" , и др.
я не умею буквами писать/излагать мысли ツ ,
словами/на пальцах,я бы вывел алгоритм,
иногда "пыжишься целый день" - вроде наговнокодишь,
а потом придёт умный чел и выдаст команду в одну строку 30 символов
вот такой он линупс/баш (•̮•)