$ cut -d' ' -f1 <file | sort | uniq -d | sed 's/^/^/' | grep -v -f /dev/stdin file
B 17
D 344
Сначала выбираются повторяющиеся записи в первом столбце файла file
путем вырезания столбца, его сортировки и загрузки на uniq -d
(который будет сообщать только о дубликатах).
Затем к каждой результирующей строке добавляется префикс ^
для создания регулярных выражений, которые привязываются к началу строки. Вывод команды sed
с заданными данными:
^A
^C
Последний grep
читает эти регулярные выражения и выбирает все строки из файла, которые не соответствуют ни одному из них. Мы получаем grep
для чтения шаблонов из sed
с помощью -f / dev / stdin
.
Результат будет иметь тот же порядок, что и в исходном файле.