Linux: дедупликация на основе определенных полей - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть CSV-файл, в котором мне нужно дедуплицировать записи, где поле FIRST совпадает, даже если другие поля не совпадают.Кроме того, в левой строке должна быть строка, в которой одно из других полей имеет самую высокую дату.

Вот как выглядят мои данные:

"47917244","000","OTC","20180718","7","2018","20180719","47917244","20180719"
"47917244","000","OTC","20180718","7","2018","20180731","47917244","20180731"
"47917244","000","OTC","20180718","7","2018","20180830","47917244","20180830"

Все 3 строки имеютто же значение в первом поле.Девятое поле является полем даты, и я хочу его дедупликации таким образом, чтобы третья строка, имеющая самое высокое значение даты, была сохранена, но две другие строки были удалены.

1 Ответ

0 голосов
/ 26 апреля 2019

После проверки другой записи stackoverflow ( Есть ли способ 'uniq' по столбцу? ), я получил его, используя сочетание sort и awk:

sort -t, -u -k1,1 -k9,9 <file> |
    awk -F',' '{ x[$1]=$0 } END { for (i in x) print x[i] }'
...