如果没有" @"我如何为所有线路grep?行中的字符

时间:2018-05-09 17:19:36

标签: macos adobe-indesign bbedit grep-indesign

我在BBEdit / InDesign中打开了一个文本文件,其中包含某些行上的电子邮件地址(大约三分之一的行)以及其他行上的名称和日期内容。我只想保留包含电子邮件的行并删除所有其他行。

我可以看到一个简单的模式,除了那些带有电子邮件地址的行之外的所有行都是@字符的负匹配。

我无法使用grep -v pattern,因为grep对话框的查找和替换实施只包含Find patternReplace pattern的字段。 grep -something选项在此上下文中不存在。

请注意,我注意到要尝试构建一个有效的电子邮件地址测试,只需使用一个(或多个)@字符即可保留一行,所有其他行必须从列表。

我得到的最接近的是一种仅触及电子邮件地址线的模式(与我的目标相反):

^((\w+|[ \.])\w+)[?@].*$

我在括号中尝试了^.*[^@].*$和更复杂/w[/w|\.]的各种组合,并使用@转义[^\@],并将(!?)转为负{ 1}}。

我想找到这些非电子邮件地址行,并使用OS X BBEdit / InDesign上的任何这些应用程序删除它们。如果必须,我将使用命令行。必须有一种使用应用程序查找和替换grep的方法虽然我期待。

1 个答案:

答案 0 :(得分:0)

如评论中所述,grep -v @ filename列出所有没有@符号的行。你也可以使用grep @ filename> new_filename 文件new_filename只包含带@的行。您可以使用此新文件或删除旧文件中的所有行,并将新文件的内容粘贴到其中。