Согласно следующей команде Perl
(эта командная часть сценария ksh)
Я могу заменить старые имена хостов новыми именами в Linux или Solaris
previos_machine_name=linux1a
new_machine_name=Red_Hat_linux1a
export previos_machine_name
export new_machine_name
.
perl -i -pe 'next if /^ *#/; s/(\b|[[:^alnum:]])$ENV{previos_machine_name}(\b|[[:^alnum:]])/$1$ENV{new_machine_name}$2/g' file
ОБЪЯСНЕНИЕ: согласно команде perl - мы не замените имена хостов в следующем случае:
ПРАВИЛО: [НОМЕРА] || [буква] ИМЯ ХОСТА [НОМЕРА] || [буква]
мой вопрос
после того, как я использовал команду Perl, чтобы заменить все старые имена хостов новыми именами хостов на основе «ПРАВИЛА» в команде Perl
как проверить, что старые имена хостов не существуют в файле?
например
previos_machine_name=linux1a
new_machine_name=Red_Hat_linux1a
more file
AAARed_Hat_linux1a verification should be ignore from this line
@Red_Hat_linux1a$ verification should be match this line
P=Red_Hat_linux1a verification should be match this line
XXXRed_Hat_linux1aZZZ verification should be ignore from this line
.
.
.
.
Используйте нижнюю строку для печати строки соответствия
perl -i -pe 'next if /^ *#/; if ($_ =~ /(\b|[[:^alnum:]])$ENV{previos_machine_name}(\b|[[:^alnum:]])/) { print STDOUT $_; }' file
Если он напечатан пустым, это означает, что старого имени хоста не существует.