Arhn - архитектура программирования

Удалить повторяющуюся запись на основе определенных полей в сценарии оболочки

Я пытаюсь удалить дубликаты из Inputfile.txt. Дублирующая логика применяется на основе определенных полей. Например, 911548.PP.K содержит эти поля как дубликаты 5319,4790,10/03/2017 — в нем есть три записи из трех, которые нам нужно удалить, что иметь более низкую дату в последнем поле. Согласно этой записи 04.10.2017 необходимо удалить и сохранить большую дату. В этом случае 911548.PP.K имеет две записи с одинаковой большей датой, поэтому выберите любую из них.

У меня есть другой сценарий, который не работает с приведенным ниже сценарием, этот ключ имеет две записи 154610.PP.K, но поля, которые мы проверяем, дублируют его разные. Например:

154610 5643,1293,10/03/2017 and
154610 9835,83932,10/03/2017

В этом случае следует удалить запись, поскольку повторяющиеся поля не совпадают, поэтому эти ключи не считаются дублирующейся записью.

Но нижеприведенная команда оболочки рассматривает эту запись как дублирующую, как это исправить?

awk -F ' |,' '{t=$NF;gsub("/","",t);if(b[$1]<t){a[$1]=$0;b[$1]=t}}END{for(x in a)print a[x]}' inputfile.txt

Входной файл.txt

194365.PP.K 06ae6a319ec8,7012,3692,10/03/2017,7,Q,MM,f9cd8.csv,4754454,csv,,405a1.csv,4,25139,txt,10/04/2017
911548.PP.K 876d4108-b08,5319,4790,10/03/2017,7,Q,NN,g8ijk.csv,4754454,csv,,e9051.csv,4,25139,txt,10/04/2017
154610.PP.K 9c9d9d2a-j9k,5643,1293,10/03/2017,7,Q,PP,6001j.csv,4754454,csv,,907a1.csv,4,25139,txt,10/04/2017
223410.PP.K ab16e77a-09j,8403,43011,10/03/2017,7,Q,OO,f2cd.csv,4754454,csv,,a97ai.csv,4,25139,txt,10/04/2017
234173.PP.K fa180bd-81d3,4608,4697,10/03/2017,7,Q,EC,0015d8.csv,4754454,csv,,we405.csv,4,25139,txt,10/04/2017
911548.PP.K 876d4108-b08,5319,4790,10/03/2017,7,Q,NN,g8ijk.csv,4754454,csv,,e9051.csv,4,25139,txt,10/05/2017
911548.PP.K 876d4108-b08,5319,4790,10/03/2017,7,Q,NN,g8ijk.csv,4754454,csv,,e9051.csv,4,25139,txt,10/05/2017
154610.PP.K 9c9d9d2a-j9k,9835,83932,10/03/2017,7,Q,PP,6001j.csv,4754454,csv,,907a1.csv,4,25139,txt,10/04/2017

Выходной файл.txt

194365.PP.K 06ae6a319ec8,7012,3692,10/03/2017,7,Q,MM,f9cd8.csv,4754454,csv,,405a1.csv,4,25139,txt,10/04/2017
154610.PP.K 9c9d9d2a-j9k,5643,1293,10/03/2017,7,Q,PP,6001j.csv,4754454,csv,,907a1.csv,4,25139,txt,10/04/2017
223410.PP.K ab16e77a-09j,8403,43011,10/03/2017,7,Q,OO,f2cd.csv,4754454,csv,,a97ai.csv,4,25139,txt,10/04/2017
234173.PP.K fa180bd-81d3,4608,4697,10/03/2017,7,Q,EC,0015d8.csv,4754454,csv,,we405.csv,4,25139,txt,10/04/2017
911548.PP.K 876d4108-b08,5319,4790,10/03/2017,7,Q,NN,g8ijk.csv,4754454,csv,,e9051.csv,4,25139,txt,10/05/2017
154610.PP.K 9c9d9d2a-j9k,9835,83932,10/03/2017,7,Q,PP,6001j.csv,4754454,csv,,907a1.csv,4,25139,txt,10/04/2017
07.11.2017

Ответы:


1

Используйте многомерные массивы в awk

    awk -F \, '{rec[$2,$3,$4]=$0} END{for(k in rec){print(rec[k]}}' input.file

Это испортит порядок строк. Есть ли ключ, с помощью которого вы можете пересортировать вывод?

07.11.2017
  • Все это только ключ 194365.ПП.К 08.11.2017
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..