BASH:按域对电子邮件地址列表进行排序

标签 bash list dns email-address

我想在 bash 中按域对文件中的电子邮件地址列表进行排序。

$ cat file.txt
abc@abc.net
bbb@aaa.org
aba@aaa.com
aaa@aaa.com
ccc@abb.com
aba@abb.com
abc@abc.com

我尝试使用排序,但它只从用户名开始排序。

$ sort file.txt
aaa@aaa.com
aba@aaa.com
aba@abb.com
abc@abc.com
abc@abc.net
bbb@aaa.org
ccc@abb.com

我想先对域进行排序,然后对用户名进行排序。

最佳答案

$ sort -t @ -k2 file
aaa@aaa.com
aba@aaa.com
bbb@aaa.org
aba@abb.com
ccc@abb.com
abc@abc.com
abc@abc.net

人工排序:

-t, --field-separator=SEP
       use SEP instead of non-blank to blank transition

-k, --key=KEYDEF
       sort via a key; KEYDEF gives location and type

关于BASH:按域对电子邮件地址列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54855602/

相关文章:

linux - 使用 sed 或 awk 或新安装的 Debian 9 中的工具,如何添加未修剪的文本?

bash - 如何在 Bash 脚本中 grep 程序输出的一系列数据值

email - 为什么 SendGrid 不需要 DNS 修改

php - 如何在注册时为用户创建子域

amazon-web-services - 是否有任何 Amazon Route 53 GUI 工具?

java - 从 Java 执行但不是从命令行执行时出现 NoSuchFieldError

linux - bash 中过去 24 小时的 Grep 时间戳

python - 如何在python中拆分和排序列表的内容

validation - 使用 VBA 在 Excel 表中添加验证列表时出现问题

c++ - 如何在C++中获取排序后保留的列表元素的指针