0

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

我可以看到一个简单的模式来消除除带有电子邮件地址的行之外的所有行,即对@字符进行否定匹配。

我不能使用,因为对话框grep -v pattern的查找和替换实现只有和字段。在这种情况下不存在选项。grepFind patternReplace patterngrep -something

注意,我注意到试图构建一个有效的电子邮件地址测试,只是使用一个(或多个)@字符的存在来允许一行保留,所有其他行必须从列表中删除。

我得到的最接近的是一个只命中电子邮件地址行的模式(与我的目标相反):

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

我尝试了各种组合^.*[^@].*$ 和更复杂的/w[/w|\.]在括号中,并转义了@with[^\@]和negative look forward like (!?)

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

4

1 回答 1

0

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

于 2018-05-09T18:28:06.783 回答