Как отсортировать по 2 столбцам и сохранить верхнюю строку из каждой группы?

У меня есть два файла csv следующего формата:

column1,column2,user,column4,column5,column...column14 

Я хотел бы отсортировать файлы на основе пользователя в качестве первого ключа, а затем на основе столбца14 в порядке убывания, который представляет собой число, представляющее временную метку.

Результат будет таким:

file1:

 A,AA,jim,XX,YY,....,1485771395 A,AA,jim,XX,YY,....,1485771395 

и т.д

Я бы хотел, чтобы из этих файлов сохранялась только первая строка каждого кластера, т.е.

 A,AA,jim,XX,YY,....,1485771395 

Как я могу это сделать?

Обновить:
Пример ввода:

 "1/30/2017 11:14:55 AM",Valid customer,jim.smith,NY,1485771295 "1/26/2017 5:06:11 AM",New customer,john.doe,CA,1485403571 "1/26/2017 8:02:01 PM",Valid customer,jim.smith,NY,1485457321 "1/30/2017 4:14:30 AM",New customer,tim.jones,CO,1485746070 "1/30/2017 11:09:36 AM",New customer,tim.jones,CO,1485770976 "1/30/2017 11:14:50 AM",Valid customer,jim.smith,NY,1485771290 "1/22/2017 11:51:51 AM",New customer,tim.jones,CO,1485082311 

Последний столбец – это эпоха первого столбца, позволяющая сортировать строки, используя число, а не строку.
Таким образом, ожидаемый результат будет:
a) Сортировка по имени и по метке в обратном порядке, чтобы мы получили:

 "1/30/2017 11:14:55 AM",Valid customer,jim.smith,NY,1485771295 "1/30/2017 11:14:50 AM",Valid customer,jim.smith,NY,1485771290 "1/26/2017 8:02:01 PM",Valid customer,jim.smith,NY,1485457321 "1/26/2017 5:06:11 AM",New customer,john.doe,CA,1485403571 "1/30/2017 11:09:36 AM",New customer,tim.jones,CO,1485770976 "1/30/2017 4:14:30 AM",New customer,tim.jones,CO,1485746070 "1/22/2017 11:51:51 AM",New customer,tim.jones,CO,1485082311 

Таким образом, у нас есть кластер строк для jim.smith другой для tim.jones отсортированный по последнему столбцу в обратном порядке (т.е. последняя дата первой строки является первой в кластере) и строка для john.doe которая имеет только 1 запись.

Тогда я хотел бы сохранить только первую строку каждого кластера. Т.е.

 "1/30/2017 11:14:55 AM",Valid customer,jim.smith,NY,1485771295 "1/26/2017 5:06:11 AM",New customer,john.doe,CA,1485403571 "1/30/2017 11:09:36 AM",New customer,tim.jones,CO,1485770976 

  • Удаление дубликатов в большом текстовом списке
  • Как найти наиболее распространенное имя в файле passwd
  • Переупорядочение файла на основе второго файла
  • Как сортировать с разделителем длиной несколько символов?
  • sort и ls - почему не заглавные буквы отсортированы в первую очередь?
  • Как создать список, сгенерированный md5deep в алфавитном порядке относительных путей?
  • Нестандартная сортировка вывода ls
  • Как сортировать файлы по части имени файла?
  • 2 Solutions collect form web for “Как отсортировать по 2 столбцам и сохранить верхнюю строку из каждой группы?”

    Данный input файла как

     "1/30/2017 11:14:55 AM",Valid customer,jim.smith,NY,1485771295 "1/26/2017 5:06:11 AM",New customer,john.doe,CA,1485403571 "1/26/2017 8:02:01 PM",Valid customer,jim.smith,NY,1485457321 "1/30/2017 4:14:30 AM",New customer,tim.jones,CO,1485746070 "1/30/2017 11:09:36 AM",New customer,tim.jones,CO,1485770976 "1/30/2017 11:14:50 AM",Valid customer,jim.smith,NY,1485771290 "1/22/2017 11:51:51 AM",New customer,tim.jones,CO,1485082311 

    тогда

     sort -t, -k3,3 -k5,5rn input | awk -F, '!seen[$3]++' "1/30/2017 11:14:55 AM",Valid customer,jim.smith,NY,1485771295 "1/26/2017 5:06:11 AM",New customer,john.doe,CA,1485403571 "1/30/2017 11:09:36 AM",New customer,tim.jones,CO,1485770976 

    С gnu datamash :

     datamash -t, -s -f -g 3 max 5 <infile 

    но обратите внимание, что перед запуском необходимо удалить все завершающие пробелы из каждой строки на вашем входе.
    Только с awk , используя два массива:

     awk -F, '!z[$3]{x[$3]=$0;z[$3]=$5;next}$5>z[$3]{x[$3]=$0} END{for (i in z){print x[i]}}' infile 
    Linux и Unix - лучшая ОС в мире.