![如何使用 SED 删除电子邮件中 @ 字符前包含三个以上点的行?](https://linux22.com/image/1580510/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20SED%20%E5%88%A0%E9%99%A4%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6%E4%B8%AD%20%E2%80%8B%E2%80%8B%40%20%E5%AD%97%E7%AC%A6%E5%89%8D%E5%8C%85%E5%90%AB%E4%B8%89%E4%B8%AA%E4%BB%A5%E4%B8%8A%E7%82%B9%E7%9A%84%E8%A1%8C%EF%BC%9F.png)
sed '/\(.*\..*\)\{4,\}/d'
上面提到的命令识别行中的每个点......
它也识别 @ 符号后的点。例如,结果中甚至显示如下内容:[电子邮件保护]
您能帮我修改上述命令,使得只有 @ 的左侧才计算超过 3 个的点,而忽略电子邮件右侧字符 @ 后面的点吗?
例如:
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
我希望以下在@字符左侧带有多个点(3个或更多点)的行仅作为识别器并从文件中删除。
[email protected]
[email protected]
[email protected]
有哪位专家能指点一下如何修改上述 SED 命令吗?谢谢
答案1
我不是专家,但要删除左侧的 4 个点(或更多)图案,@
您只需@.*
在表达式末尾添加:
sed '/\(.*\..*\)\{4,\}@.*/d'
@
意思是不管右边是什么字符,都删除左边的4个点(或更多)的图案。