Этот ответ на основе awk
ответ отправляется potong..
Это дважды с такой скоростью, как comm
метод (в моей системе), для тех же 6 миллионов строк в основном файле и 10 тысяч ключей... (теперь обновленный для использования FNR, НОМЕРА)
Хотя awk
быстрее, чем Ваша существующая система и даст Вам и Вашему компьютеру (компьютерам) некоторую передышку, знать, что, когда обработка данных так интенсивна, как Вы описали, Вы получите лучше всего полные результаты путем переключения на специализированную базу данных; например, SQlite, MySQL...
awk '{ if (/^[^0-9]/) { next } # Skip lines which do not hold key values
if (FNR==NR) { main[$0]=1 } # Process keys from file "mainfile"
else if (main[$0]==0) { keys[$0]=1 } # Process keys from file "keys"
} END { for(key in keys) print key }' \
"mainfile" "keys" >"keys.not-in-main"
# For 6 million lines in "mainfile" and 10 thousand keys in "keys"
# The awk method
# time:
# real 0m14.495s
# user 0m14.457s
# sys 0m0.044s
# The comm method
# time:
# real 0m27.976s
# user 0m28.046s
# sys 0m0.104s
Нет никакой причины, почему определение источника файла, со стандартной командой определения источника, которая является .
нет source
(который является cshism, также поддерживаемым tcsh, ударом, ksh и zsh, но не стандартный) не работал бы от .xsessionrc
.
Необходимо удостовериться, что синтаксис в полученном файле является стандартным sh
синтаксис.
Почему Вы выполняете в этом .xsessionrc
и не, например, в .bash_profile
или безотносительно другого файла Ваше использование оболочки на входе в систему (не путают с .bashrc
, который получен каждой оболочкой)? Здесь (Fedora) это даже имеет полезный комментарий User specific environment and startup programs
...
.profile
при входе в систему с менеджером по оформлению. Это действительно зависит от распределения, менеджера по оформлению и типа сессии, я не проверил, читает ли Ваш действительно .profile
. Если это не делает, поместить . ~/.profile
в Вашем .xsessionrc
.
– Gilles 'SO- stop being evil'
26.01.2013, 01:39
В зависимости от Вашего дистрибутива можно добавить сценарии для выполнения автоматически на начальной загрузке. Если бы Вы используете initscripts, они были бы добавлены к rc.local (/etc/rc.local IIRC), и с systemd я полагаю, что Вы сделали бы сервисный файл для них и затем включили бы его так, он работал на начальной загрузке.
С debian это был бы initscripts и таким образом rc.local
.
Монтирование должно быть, покончили /etc/fstab
который будет работать на начальной загрузке.