rc.local
файл на Debian главным образом для совместимости с системами стиля non-init. Вы не должны использовать его.
Вместо этого рекомендуется скопировать /etc/init.d/Skeleton
к новому init сценарию для того, что Вы хотите произойти при изменении runlevels, затем используйте inserv
включить его.
Обновление: Согласно комментарию ниже, больше не рекомендуется этот ответ. Однако этот ответ был отправлен за несколько лет до скелетной депрекации, и тот скелет все еще существует в Debian, нестабильном по состоянию на январь 2019.
Принятие Вас хочет сравнить строки в file b
к соответствующим строкам в file a
(т.е. что оба файла имеют то же количество строк, и Вы выдерживаете сравнение линию за линией), можно использовать сценарий Perl, чтобы сделать это для Вас:
#!/usr/bin/perl
$file_a = "/path/to/file_a";
$file_b = "/path/to/file_b";
open $fa,'<',$file_a or die "Failed to open file $file_a: $!\n";
open $fb,'<',$file_b or die "Failed to open file $file_b: $!\n";
@file_a = <$fa>;
@file_b = <$fb>;
close $fa;
close $fb;
for (0..$#file_a){
($col_c,$col_d) = (split / /,$file_a[$_])[2,3];
$col_z = $file_b[$_];
$to_display = "$col_c $col_d";
if($col_z eq $col_d){
$to_display .= " $col_z";
}
else{
$to_display .= " pin";
if ($col_z gt $col_c and $col_z gt $col_d ){
$to_display .= " lon";
}
elsif($col_z lt $col_c and $col_z lt $col_d) {
$to_display .= " sma";
}
}
print "$to_display\n";
}
Сохраните вышеупомянутый файл как /path/to/myscript
(после того, как, изменяя местоположения file_a
и file_b
к Вашим истинным местоположениям), затем сделайте это исполняемым файлом: chmod +x /path/to/myscript
и наконец вызовите его: $ /path/to/myscript
.
Как я сказал в своем комментарии, я не совсем уверен, что Вы пытаетесь сделать, Вы, кажется, хотите всегда распечатать поля c
и d
и выдерживать сравнение только d
с z
. Если так, решение ниже должно работать.
$ paste a b | awk '{print $3,$4,$6}' | head -n 1; paste a b | tail -n +2 |
while read a b c d e z; do
echo -n "$c $d";
if [ "$d" -lt "$z" ]; then
echo "pin sma";
elif [ "$d" -gt "$z" ]; then
echo "pin lon";
else echo $z;
fi;
done
Работайте на файлах в качестве примера, которые Вы обеспечили, это дает:
c d z
2 33
6 5pin lon
0 9pin lon
Так как Вы хотите арифметическое сравнение, заголовки повредят сценарий. Однако я предполагаю, что требуется иметь их в окончательном результате. Так, сначала я печатаю их:
paste a b | awk '{print $3,$4,$6}' | head -n 1;
Так, теперь мы хотим обработать остальную часть полей, пропуская заголовок. Так, мы paste
файлы снова, пропустите заголовки (tail -n +2
) и обработайте поля.
for (0..$#file_a)
цикл. – Joseph R. 31.07.2013, 14:39use strict
, и это должно смочь скомпилировать сstrict
. – jordanm 31.07.2013, 16:41