Как мне установить «платную прошивку» (драйвер Wi-Fi) с USB? (Debian)

Другой подход (который стоит опубликовать в качестве отдельного ответа): вместо подхода с разделенным файлом, который создает временные файлы, выполните пакетирование в самом программном обеспечении uniqifier. Например, использование реализации Ruby uniqifier для объяснительных целей:

require 'set'
line_batch_count = 50000 # tunable parameter
lines_seen = Set.new
line_number = 0
ARGF.each do |line|
   line_number += 1
   if (line_number % line_batch_count) == 0
     lines_seen.clear
   end
   unless lines_seen.include? line
      puts line
      lines_seen << line
   end
end

Идея состоит в том, чтобы время от времени очищать хэш-множество. Затем это становится итеративным:

$ cat uniqm-input.txt | ruby uniqm-capped.rb | wc -l
   20021

$ cat uniqm-input.txt | ruby uniqm-capped.rb | ruby uniqm-capped.rb | wc -l
    1001

$ cat uniqm-input.txt | ruby uniqm-capped.rb | ruby uniqm-capped.rb | head
1506
1054
1623
1002
1173
1400
1226
1340
1824
1091

Таким образом, вы можете запускать эту версию с ограниченными ограничениями неоднократно, пока количество строк не изменится от одной итерации к другой.

Обратите внимание, что этот метод capped-uniqm не зависит от языка: вы можете очистить массив lines_seen каждые N строк, независимо от того, используете ли вы awk, python, perl, C++ и т. Д. Для всех этих языков существуют методы set-clear; Я считаю, что awk delete нестандартно, но распространено.

9
17.12.2015, 17:21
0 ответов

Теги

Похожие вопросы