Вот решение в Perl. Необходимо сохранить следующий код в файле и выполнить его как сценарий (см. ниже):
#!/usr/bin/perl
$file1 = '/path/to/file1';
$file2 = '/path/to/file2';
open $f1,'<',$file1;
open $f2,'<',$file2;
while(<$f1>){
($c1,$c2,$c4,$c5) = (split / /)[0,1,3,4]; #get relevant columns in file 1
$lines_dictionary{"$c1 $c2 $c4"}="$c5---$_"; #create a hash entry keyed by the relevant columns
}
while(<$f2>){
($c1,$c2,$c4,$c5) = (split / /)[0,1,3,4]; #get relevant columns in file 2
if(exists $lines_dictionary{"$c1 $c2 $c4"}){ #if a line with similar columns was seen in file 1
($file1_c5,$file1_line) = split /---/,$lines_dictionary{"$c1 $c2 $c4"}; #parse the hash entry this line in file 1
if($file1_c5 -ne $c5){ #if column 5 of file 2 doesn't match column 5 of file 1
print "${file1_line}$_\n"; #we only need one extra newline as the lines read from the files have trailing ones.
}
}
}
close $f1;
close $f2;
Используйте любой текстовый редактор, чтобы вставить этот сценарий в файл, изменить $file1
и $file2
переменные для отражения истинных местоположений файлов затем сделайте исполняемый файл сценария путем выполнения:
$ chmod +x /path/to/script
Наконец, назовите сценарий:
$ /path/to/script
Отказ от ответственности
Метод #1 - системные crons
Добавить скрипт резервного копирования в системные crons, а не в реальную пользовательскую запись crontab. Большинство систем поддерживают структуру каталога под [115536]/etc[115537] следующим образом:
Вы можете просто поместить скрипт, который вы хотите запустить с любой частотой в соответствующий каталог.
Section "ServerFlags"
Option "DontVTSwitch" "on"
EndSection
ReferencesА запись в вашем файле [115542]/etc/sudoers[115543] будет выглядеть следующим образом:
xmodmap fix-e-key-for-mac.xmodmap >/dev/null 2>&1
How to run a specific program as root without a password prompt?
Когда вы включите его в качестве первой команды в ваш скрипт, все команды будут выполняться в кронтабе root.
Если вам нужна дополнительная информация, посмотрите на странице [115530]this[115531].
Команды, которые обычно выполняются с административными привилегиями (т.е. они обычно выполняются с помощью sudo) должны быть добавлены в корневой пользовательский crontab (вместо пользовательского crontab)