The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Выпуск утилиты GNU grep 3.1"
Отправлено Аноним84701, 05-Июл-17 03:16 
> дано два файла с ОГРН (число 13 символов), в одном 4.5m, в другом 800k строчек. Надо сделать третий файл с содержимым f1 которого нет в f2.

Так как вы не написали, в каком файле сколько строк, сделал для верности:


% seq 1000000000000 1000005000000|shuf>f1
% seq 1000003000000 1000009000000|shuf>f2
head -3 f1 f2 && wc -l f1 f2
==> f1 <==
1000001476233
1000004330833
1000001025162

==> f2 <==
1000006027753
1000007334577
1000007732550
5000001 f1
6000001 f2
11000002 total


Т.е. 5м и 6м. Cойдет?
> grep -v -x -f f2 f1 >f3
> съел 2.5ГБ рамы и задумался уже на много минут. Сервак с 12 ядрами, 100ГБ ОЗУ. И чё это грепу дало?

Cервака под рукой нема, есть старенький ноут с i5 (первым еще) и "слегка" поменьше рамы.
НО! Есть чит, называется "man grep"!
> -F, --fixed-strings
>              Interpret PATTERN as a list of fixed strings, separated by  newlines, any of which is to be matched
>  fgrep is the same as ‘grep -F’.


% time grep -v -x -F -f f1 f2|wc -l
4000000
grep -v -x -F -f f1 f2  16,20s user 0,90s system 99% cpu 17,117 total #1GB ОЗУ
wc -l  0,56s user 0,04s system 3% cpu 17,023 total

% time grep -v -x -F -f f2 f1|wc -l
3000000
grep -v -x -F -f f2 f1  18,39s user 1,05s system 99% cpu 19,470 total # 1.2GB ОЗУ
wc -l  0,43s user 0,03s system 2% cpu 19,357 total

# убираем -х, который тут нужен как рыбе зонтик
% time grep -v -c -F -f f2 f1      
3000000
grep -v -c -F -f f2 f1  15,42s user 0,57s system 99% cpu 16,015 total  # ~700MB озу

% time awk 'NR==FNR {a[$0];next} !($0 in a){print $0}' f2 f1|wc -l            
3000000
awk 'NR==FNR {a[$0];next} !($0 in a){print $0}' f2 f1  11,76s user 0,65s system 99% cpu 12,411 total
wc -l  0,40s user 0,05s system 3% cpu 12,334 total    #~1ГБ


> Вот из прямо сейчас очередной факап грепа:

А может, проблема в прокладке между спинкой стула и монитором? :)

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру