grep и grep -v одновременно - PullRequest
0 голосов
/ 06 мая 2011

Я должен получить довольно большой текстовый файл (~ 15 ГБ) для 3 разных строк.Важно отметить, что три строки говорят, что 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 ]

2 голосов
/ 06 мая 2011

Используйте 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/;'
0 голосов
/ 06 мая 2011

используйте egrep и регулярное выражение, соответствующее X ИЛИ ИЛИ Z.

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

egrep 'X | Y | Z` myFile.txt

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...