使用grep匹配并擦除大块文本中的模式

时间:2013-01-23 15:14:40

标签: regex grep

我有一个非常大的文本文件,其中包含类似于以下内容的数据:

     but/CC as/IN 1/Z church/NP historian/NN/Fc 
     as/IN 1/Z "/Fe rupture/NN and/CC new/JJ beginning/NN century/NN ./Fp
    ======>match found: \#\#[a-z]+\/NN\#\#
    ======>match found: be\/V[A-Z]+(\s[.]{0,10})?\#\#
    ======>match found: \#\#\sof\/IN

我想使用(linux)终端命令 grep 匹配并删除所有以:

开头的行

======>匹配发现:

以换行符结尾。

因此,根据前面的例子,我想运行grep并获得以下输出

  

但/ CC为/ IN 1 / Z教堂/ NP历史学家/ NN / Fc            as / IN 1 / Z“/ Fe破裂/ NN和/ CC new / JJ开始/ NN世纪/ NN ./Fp

提前感谢您的帮助

2 个答案:

答案 0 :(得分:1)

grep -E -v '^======>match found:.+$' file.txt

-E打开扩展正则表达式,-v取消输出,即打印所有不匹配的行。

答案 1 :(得分:1)

Sed是你的朋友

sed -i '/^======>match found:/d' largefilename.txt

将删除所有以======>match found:

开头的行

注意,-i开关意味着largefilename.txt将被修改而不是打印到stdout,这应该比使用grep更有效。