Ваше решение по сортировке может быть немного быстрее, если вы отсортируете файлы по отдельности, а затем
использовать comm
для поиска несовпадающих строк:
sort a.txt -o a.txt
sort b.txt -o b.txt
comm -3 a.txt b.txt | sed 's/^\t//'
В качестве альтернативы, если один из ваших файлов данных не слишком велик, вы можете считать его весь в ассоциативный массив, а затем сравнивать другой файл построчно. Например, с помощью awk:
awk '
ARGIND==1 { item[$0] = 1; next }
ARGIND==2 { if(!item[$0])print; else item[$0] = 2 }
END { for(i in item)if(item[i]==1)print i }
' a.txt b.txt
В приведенном выше ARGIND
подсчитывает аргументы файлов.
Первая строка сохраняет строки файла 1 в массиве item
. Следующая строка проверяет, есть ли текущая строка из файла 2 в этом массиве. Если нет, то она выводится на печать, в противном случае мы отмечаем, что этот элемент встречался в обоих файлах. Наконец, мы печатаем элементы, которые не были замечены в обоих файлах.
Если один из ваших файлов намного меньше другого, лучше всего поместить его первым в args, чтобы массив элементов оставался небольшим:
if [ $(wc -l <a.txt) -lt $(wc -l <b.txt) ]
then args="a.txt b.txt"
else args="b.txt a.txt"
fi
awk '
ARGIND==1 { item[$0] = 1; next }
ARGIND==2 { if(!item[$0])print; else item[$0] = 2 }
END { for(i in item)if(item[i]==1)print i }
' $args
apt -ежедневно делает только одну вещь по умолчанию :загружает список устанавливаемых/обновляемых пакетов. Если вы его отключите, вам нужно будет чаще запускатьapt update
(или аналогичный )перед обновлением или установкой пакетов.
Ничто не зависит от apt -daily (вы можете проверить, что systemctl list-dependencies --reverse apt-daily
не мешает запуску чего-либо еще ), поэтому это не замедляет процесс загрузки, за исключением использования ресурсов, которые могут быть использованы другими задачами хочу. Единственный ресурс, который ежедневно потребляет apt -, — пропускная способность сети. Это может занять некоторое время, если в список пакетов были внесены значительные обновления, но это проблема только в том случае, если ваша пропускная способность очень ограничена, и более важно иметь большую пропускную способность в течение первых нескольких секунд после загрузки, чем в какое-либо другое время..
systemd-analyze blame
показывает, что занимает много времени, но не показывает, каково воздействие. Поскольку apt -daily больше ничего не блокирует, тот факт, что это занимает много времени, влияет только на сам apt -daily, а не на остальные функции.systemd-analyze critical-chain
более полезен, если вас беспокоит время загрузки, например, сколько времени потребуется, чтобы ваш компьютер стал полезным.
Таким образом, безопасно выключать apt -ежедневно, если вы не забываете запускать apt update
перед проверкой обновлений, и вы делаете это регулярно, не полагаясь на какие-либо автоматические уведомления о доступных обновлениях. Но это не особенно полезно.