我在BBEdit / InDesign中打开了一个文本文件,其中包含某些行上的电子邮件地址(大约三分之一的行)以及其他行上的名称和日期内容。我只想保留包含电子邮件的行并删除所有其他行。
我可以看到一个简单的模式,除了那些带有电子邮件地址的行之外的所有行都是@
字符的负匹配。
我无法使用grep -v pattern
,因为grep
对话框的查找和替换实施只包含Find pattern
和Replace pattern
的字段。 grep -something
选项在此上下文中不存在。
请注意,我注意到要尝试构建一个有效的电子邮件地址测试,只需使用一个(或多个)@
字符即可保留一行,所有其他行必须从列表。
我得到的最接近的是一种仅触及电子邮件地址线的模式(与我的目标相反):
^((\w+|[ \.])\w+)[?@].*$
我在括号中尝试了^.*[^@].*$
和更复杂/w
和[/w|\.]
的各种组合,并使用@
转义[^\@]
,并将(!?)
转为负{ 1}}。
我想找到这些非电子邮件地址行,并使用OS X BBEdit / InDesign上的任何这些应用程序删除它们。如果必须,我将使用命令行。必须有一种使用应用程序查找和替换grep的方法虽然我期待。
答案 0 :(得分:0)
如评论中所述,grep -v @ filename列出所有没有@符号的行。你也可以使用grep @ filename> new_filename 文件new_filename只包含带@的行。您可以使用此新文件或删除旧文件中的所有行,并将新文件的内容粘贴到其中。