删除没有@ textmate正则表达式的所有行

时间:2012-10-21 22:49:09

标签: regex textmate

我有一个巨大的文件,我需要过滤掉所有不包含电子邮件地址的行(逗号分隔文件)(通过@字符确定)。

现在我所拥有的是找到包含@符号的所有行:

.*,.*,.*@.*,.*$

基本上你有4个值,第3个值有电子邮件地址。

替换为:value将为空。

2 个答案:

答案 0 :(得分:4)

在TextMate中有大约10种不同的方法可以在命令行中执行此操作。以下是一些更简单的方法......

来自TextMate:

  1. Command-control-t,开始输入命令“将非匹配行复制到新文档”的某些部分,使用@(没有其他)作为模式。
  2. 与上述相同,但您要查找的命令是“提取文件/选择”
  3. 查找并选择@符号。然后执行与上面相同的操作,但搜索命令“Strip Lines Matching Selection / Clipboard”。你可能没有它,因为我自己也开发了这个。
  4. 从命令行:

    键入以下命令之一,用文件名替换FILE,包括文件路径(如果它不在当前工作目录中)。过滤的内容可以在FILE-new中找到。

    1. 使用egrep: egrep -v '@' FILE > FILE-new
    2. 使用sed: cat FILE | sed -e "/@/D" > FILE-new
    3. 对于上述两种情况,请使用diff查看您的成就:diff FILE{,-new}

      应该这样做,我猜...

答案 1 :(得分:1)

尝试无需替换^[^@]*$。或者,使用正则表达式grep文件并将结果重定向到新文件。