Linux

根據主機名規則在文件中進行 Linux/Solaris 驗證(主機名更改後)

  • December 10, 2012

根據下面的 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 命令 - 我們不會在以下情況下替換主機名:

規則:

$$ NUMBERS $$||$$ letter $$主機名$$ NUMBERS $$||$$ letter $$ 我的問題

在我使用 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
  .
  .
  .
  .

使用 fowling 行列印匹配字元串

perl -i -pe 'next if /^ *#/; if ($_ =~ /(\b|[[:^alnum:]])$ENV{previos_machine_name}(\b|[[:^alnum:]])/) { print STDOUT $_; }'  file

如果它列印為空,則意味著不存在舊主機名。

引用自:https://serverfault.com/questions/456694