grep和grep -v同时

时间:2011-05-06 05:28:21

标签: linux grep

我必须为3个不同的字符串grep一个非常大的文本文件(~15GB)。需要注意的重要事项是三个字符串,即X,Y和Z占文本文件的约99.9%并且是互斥的。

即X + Y + Z + .01%垃圾=完整档案

那么有什么方法可以通过同时执行grep和grep -v函数来减少时间 因此,逻辑流应该是:

grep X filename.txt >> linescontainingstringX.
somehow do grep Y and grep Z on the remaining file ie grep Y >> linesnotcontainingstringX

如果有方法,请告诉我。

2 个答案:

答案 0 :(得分:2)

使用perl。

perl -n -e 'BEGIN{ open XFILE,">x.txt" or die "$!" ; open YFILE,">y.txt"  or die "$!"; open ZFILE, ">z.txt" or die "$!";} print XFILE $_ if /X/; print YFILE $_ if /Y/; print ZFILE $_ if /Z/;'

答案 1 :(得分:0)

使用egrep和与X OR Y OR Z匹配的正则表达式。

http://www1.cs.columbia.edu/~tal/3261/fall07/handout/egrep_mini-tutorial.htm

egrep'X | Y | Z`myFile.txt