列表如下:
firstman@gmail.com:pass1234
someguy@yahoo.com:onepass789
secondman@gmail.com:looksPass
firstman@yahoo.com:pass1234
thirdman@cox.net:mypas345
someguy@mail.com:onepass789
firstman@
someguy@
重复了2次,但与其他邮件提供商一起。
我需要获得以下输出:
firstman@gmail.com:pass1234
someguy@yahoo.com:onepass789
secondman@gmail.com:looksPass
thirdman@cox.net:mypas345
uniq -u
仅部分完成此工作-它比较整行,而我需要比较@emailprovider:
模式之外的字符串。
如何在提取唯一行时“丢弃”此模式?
答案 0 :(得分:0)
如果翻转周围的字段,则可以使用--skip-fields=1
(或-f 1
)仅考虑电子邮件的唯一性。
答案 1 :(得分:0)
您可以改用以下awk
命令:
awk -F@ '!s[$1]{s[$1]=1;print}' filename
答案 2 :(得分:0)
使用AWK,您可以说:
awk -F'[@:]' '!seen[$1,$3]++' inputlist
产量:
firstman@gmail.com:pass1234
someguy@yahoo.com:onepass789
secondman@gmail.com:looksPass
thirdman@cox.net:mypas345
-F'[@:]'
将字段分隔符设置为“ @”或“:”。$1
将字符串保留在“ @”之前,并将$3
保留在字符串“:”之后。'!seen[$1,$3]++'
项,则条件$1,$3
告诉AWK打印该行。