如何确定特定字符后每一行的唯一性?

How can I determine uniqueness of each line after a certain character?

我有一个这样的电子邮件列表:

如何删除所有基于域的重复电子邮件?所以在上面的例子中,我会删除 name_2@domain.com 和 name_2@domain_3.com.

我知道如何使用 uniq 但它似乎不支持在确定唯一性之前跳到 @ 字符。

分解问题,您似乎只想保留每个域的第一个地址。为此,您首先获得一个唯一的域列表,然后使用 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