Как я могу определить уникальность каждой строки после определенного символа?
У меня есть список адресов электронной почты, как это:
- name_1@domain.com
- name_2@domain.com
- name_1@domain_2.com
- name_1@domain_3.com
- name_2@domain_3.com
- name_1@domain_4.com
Как я могу удалить все дубликаты электронных писем в зависимости от домена? Поэтому в приведенном выше примере я бы удалил name_2@domain.com и name_2@domain_3.com.
Я знаю, как использовать uniq, но он не поддерживает переход к @ char до определения уникальности.
1 ответ
Решение
Разбивая проблему, похоже, вы хотите сохранить только первый адрес для каждого домена. Для этого вы сначала получите уникальный список доменов, а затем используйте head, чтобы сохранить только первый из них. Предполагая, что у вас есть эти адреса по одной строке в файле с именем unsorted.txt
это можно сделать с помощью чего-то вроде:
#!/bin/sh
DOMAINS=$(cut -d@ -f2 unsorted.txt | sort | uniq)
for DOMAIN in $DOMAINS ; do
grep $DOMAIN unsorted.txt | head -1
done