grep длинный (~ 2000) список различных шаблонов в огромном файле (~ 1 миллион записей) - PullRequest
0 голосов
/ 05 октября 2018

У меня есть файл, загруженный в формате csv с почти 1 миллионом записей, как показано ниже, из дампа базы данных, над которым у меня есть еще один файл grep_types.sh, выполняющий тысячи различных комбинаций grep.Может кто-нибудь сказать мне, как сделать ниже операции в Bash или Python в стиле конфигурации + функции (как сохранение файла, как grep_types.sh это головная боль)

db_details.csv

permalink,company,numEmps,category,city,state,fundedDate,raisedAmt,raisedCurrency,round
lifelock,LifeLock,,web,Tempe,AZ,1-May-07,6850000,USD,b
lifelock,LifeLock,,web,Tempe,AZ,1-Oct-06,6000000,USD,a
lifelock,LifeLock,,web,Tempe,AZ,1-Jan-08,25000000,USD,c
mycityfaces,MyCityFaces,7,web,Scottsdale,AZ,1-Jan-08,50000,USD,seed
flypaper,Flypaper,,web,Phoenix,AZ,1-Feb-08,3000000,USD,a
infusionsoft,Infusionsoft,105,software,Gilbert,AZ,1-Oct-07,9000000,USD,a
gauto,gAuto,4,web,Scottsdale,AZ,1-Jan-08,250000,USD,seed
chosenlist-com,ChosenList.com,5,web,Scottsdale,AZ,1-Oct-06,140000,USD,seed
chosenlist-com,ChosenList.com,5,web,Scottsdale,AZ,25-Jan-08,233750,USD,angel

и у меня естьфайл, содержащий несколько тысяч строк grep, как показано ниже (я использую дополнительный файл cat операции при запуске, чтобы сделать весь файл аккуратным и понятным)

grep_types.sh

cat db_details.csv | grep ',5,' | grep -v ',angel$' > /tmp/type1.csv
cat db_details.csv | egrep -i ',LifeLock,|gauto' | grep -i 'may' | grep -iv 'dec' >> /tmp/type2.csv

ищет лучший способ / суждения для выполнения такой операции:)

1 Ответ

0 голосов
/ 05 октября 2018

Я предлагаю вам заменить скрипт grep одним скриптом awk, который может сделать все это за один просмотр файла и сэкономить много времени.

Например,

grep ',5,' | grep -v ',angel$' > /tmp/type1.csv

может быть(моя интерпретация)

$ awk -F, '$3==5 && $NF!="angel" {print > "/tmp/type1.csv"}
           # other conditional statements 
           # ...
           ' db_details.csv

еще одно преимущество - вы можете установить целевые условия поля, как в $3==5, вместо поиска по всей строке и получения возможных ложных срабатываний.

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