Использование csvjoin
из Python -на основе csvkit
$ csvjoin -Ic id file\ 1 file\ 2
id,ICD,CT
16214497,008.8,1
27154870,780.79,1
Флаг -I
отключает вывод типа, поэтому поля, подобные 008.8
, обрабатываются как строки, а не как числовые (, что может вызвать повторное -форматирование ). Этот метод прозрачно обрабатывает окончания строк в стиле DOS/Windows.
Альтернативное быстрое соединение с использованием awk:
awk -F, 'NR==FNR {a[$1]; next} $1 in a' file\ 2 file\ 1
Если в вашем файле есть окончания строк DOS/Windows (CRLF вместо обычного LF ), вы можете попробовать
awk -vRS='\r\n' -F, 'NR==FNR {a[$1]; next} $1 in a' file\ 2 file\ 1
или сначала конвертируйте файл, используя dos2unix
, tr
, sed
и т. д.
Вы можете добавить задание cron для регулярного sync
запуска, например. каждую минуту или даже каждые 10 секунд.
Вы можете добавить эти переменные в ваш rc.local или sysctl:
vm.dirty_background_bytes = 1048576
vm.dirty_bytes = 4194304
Это не не решит проблему полностью, но сделает ее менее критической в случае потери питания. Возможно, вы могли бы сделать обе переменные равными нулю, но это может сильно повлиять на производительность ввода-вывода.
К сожалению, я не знаю готовых решений.