grep
和egrep
您问题中的命令行保留.com
,.co
和.co.uk
. 因此,在本节中,我给出了两个使用grep
和的基本示例egrep
。这些命令行保留完整的顶级域 (TLD),就像您问题中的命令行一样:
grep -io 'com?(\.[a-z]{2})?$' input.txt | sort -u >output.txt
或更容易理解:
egrep -io 'com$|co$|co[.][a-z]{2}$' input.txt | sort -u >output.txt
供您参考,egrep "PATTERN1|PATTERN2"
与grep -E "PATTERN1|PATTERN2"
替代使用sed
以下sed
命令行不保留完整的顶级域 (TLD),因为您的问题指定co
在处理时保留*.co.uk
sed -n '/[a-z.][.]com\?/s/.*[.]\(com\?\)\(.*\|$\)/\1/p' input.txt | sort -u >output.txt
解释
-n
=> 不打印
/[.]com?[.]/
处理线仅匹配模式
s/.*[.]\(com?\)([.][a-z]{2})?/\1/
com
=> 用或替换该行co
p
=> 最后打印该行
测试命令行
input.txt
:
aaa.co
bbb.com
ccc.net
sss.co.uk
www.zzz.co
www.yyy.com
www.xxx.co.tw
测试基于uniq -c
:
sed -n '/[a-z.][.]com\?/s/.*[.]\(com\?\)\(.*\|$\)/\1/p' input.txt | sort | uniq -c
结果:
4 co
2 com