perl -MFatal='open,close' -ali -ne '
if ( @ARGV ) { # FileB readin
if ( $. == 1 ) { push @names, @F; }
else { push @A, join $/, @F; }
print;
} else { # FileA readin
if ( $. == 1 ) {
open FILEC, ">", "FileC.out";
print FILEC $_;
print;
@remap =
map {
my $n = $names[$_];
grep { $n eq $F[$_] } 0.. $#F;
} 0..$#names;
} else {
my $n = join $/, @F[@remap];
if ( grep { $n eq $_ } @A ) { print FILEC $_; }
else { print; }
}
}
eof and $. = 0;
eof() and close FILEC;
' FileB FileA
@names
. @A
полями, соединенными новой строкой \n
, предоставленными через $/
, который по умолчанию является RS
. Perl
's -i
. FILEC
, чтобы мы могли заполнить файл FileC.out
. @A
. $.
на 0, чтобы можно было выполнить первую проверку равенства строк для обоих файлов. Fatal.pm
загружаются функции open
и close
для автоматического -выхода при этих операциях. ifupdown
Набор скриптов не предназначен для такой работы.
Вместо этого вы можете:
ifupdown
и настройте сеть самостоятельно с помощью специального скрипта. (я бы, наверное, выбрал этот вариант)post-up
функции ifupdown
, таким образом:iface eth0 inet static
pre-up ifconfig eth0 hw ether `cat /root/macaddress`
address 0.0.0.0
netmask 255.255.255.0
post-up ifconfig eth0 `cat /root/ipaddress`
Обратите внимание, что я не проверял, может ли post -up управлять конструкцией обратной кавычки...
Может быть, вы также можете покопаться в методах manual
(вместо static
)...