我必须为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
如果有方法,请告诉我。
答案 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