如何生成包含唯一域名后缀行的输出文件
解决方案:提取域名后缀并去重
这里有几个高效的命令行工具方案,完美匹配你的需求:
方法一:用 sed + sort 快速实现(简洁首选)
这个方案用一行命令就能搞定,逻辑清晰:
sed 's/^[^.]*\.//' input.txt | sort -u > output.txt
命令解释:
sed 's/^[^.]*\.//':负责去掉每行最左侧的一级域名。其中正则表达式^[^.]*\.匹配行开头到第一个点的所有内容(比如a.、b.、r.),替换为空字符串后就得到了剩下的域名部分。sort -u:对处理后的结果进行排序并自动去重(-u参数表示只保留唯一值)。> output.txt:将最终结果写入目标文件。
测试你的输入内容,执行后得到的 output.txt 完全符合你的要求:
cop.com ex.com foz.cop.com mx.com
方法二:用 awk 保留原始顺序去重
如果你希望输出结果保持原始域名的出现顺序(不排序),可以用 awk 来跟踪已出现的内容:
awk -F '.' '{ result = "" for (i = 2; i <= NF; i++) { result = result (i > 2 ? "." : "") $i } if (!seen[result]++) print result }' input.txt > output.txt
逻辑说明:
-F '.':将每行按点分割成多个字段。- 循环从第2个字段开始拼接,还原去掉最左侧一级后的域名。
seen[result]是一个关联数组,用来记录已经输出过的结果,确保每个值只打印一次。
用这个方法处理你的输入,输出顺序会是:
ex.com mx.com foz.cop.com cop.com
内容的提问来源于stack exchange,提问作者Aryan Kushwaha
相关产品推荐
相关产品推荐

