如何过滤掉长度为8且以.com结尾的文本文件的行?

时间:2013-03-16 19:55:08

标签: linux unix ubuntu grep

我在name.txt

中有一百万个域名列表
hello.com
abc.com
gogogo.us
goodbye.me
...
...

如何仅管道包含8个字母的域名(包括.com),并且只在.comnames_new.txt结束?

我正在寻找一个简单的命令而不是脚本或任何东西。

4 个答案:

答案 0 :(得分:4)

grep是第一个获取模式匹配的工具:

egrep -x '[a-z]{4}\.com' name.txt > newname.txt

答案 1 :(得分:0)

尝试

 egrep "^[a-z][a-z][a-z][a-z]\.com$" name.txt > names_new.txt

答案 2 :(得分:0)

使用Awk。域名由.拆分为字段。

第一个字段的长度为4,因为.com增加了另外4个字符。

第二个字段应包含com

当满足两个条件时,将打印该行。

cat name.txt |awk -F. '((length($1)==4)&&($2=="com")){print;}' > names_new.txt 

注意:如果您有子域,则该行可能会发现误报,例如:mail.com.nz

答案 3 :(得分:0)

可能存在带有破折号或数字的域名 -i强制egrep无论如何都匹配。

egrep -i "^[a-z0-9-]{4}\.com$" name.txt > names_new.txt