Как удалить оба дубликата из файла на основе первых двух столбцов

Мне нужно удалить оба дубликата из файла test.txt на основе первых двух столбцов:

 tom,22,777 tom,22,888 tom,18,54 ray,44,43843 

ожидаемый результат:

  • Используйте команду sed, чтобы проверить, существует ли конкретная строка, если нет, добавьте ее
  • Сортировка блоков линий
  • Сортируйте вывод сценария, но держите линии вместе
  • сортировать, но держать строку заголовка вверху
  • Сортировка полей inline
  • Невозможно сохранить содержимое файла cat или grep
  •  tom,18,54 ray,44,43843 

    Я пробовал использовать cat test.txt | sort -ut, k1,1 k2,2 cat test.txt | sort -ut, k1,1 k2,2 но он не работает

  • Команда Sort -u не работает
  • Поддерживает ли сортировка сортировку файла на месте, например `sed --in-place`?
  • Последний сортировать по Linux
  • сортировочный разделитель: скобки и квадратные скобки
  • Сортировка блоков линий
  • Помощь в поиске файлов для шаблонов регулярных выражений, рекурсивно, со специализированным выпуском
  • 3 Solutions collect form web for “Как удалить оба дубликата из файла на основе первых двух столбцов”

    Вы можете использовать awk : обрабатывать файл дважды, один раз, чтобы подсчитать вхождения 1-го и 2-го полей, а затем снова распечатать строки, если count равен 1:

     awk -F, 'NR==FNR{seen[$1,$2]++;next};seen[$1,$2]==1' infile infile 

    Один из способов сделать это, предполагая GNU grep(1) (для fgrep -f - ) и предполагая, что поля на вашем входе состоят только из буквенно-цифровых символов:

     cut -d , -f 1,2 file.csv | sort | uniq -d | fgrep -vwf - file.csv 

    Попробуй это

      cat file.txt | grep -v "`cut -d , -f 1,2 file.txt | uniq -d`" 
    Linux и Unix - лучшая ОС в мире.