根据以下 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
.
.
.
.
答案1
使用下面的行打印匹配的字符串
perl -i -pe 'next if /^ *#/; if ($_ =~ /(\b|[[:^alnum:]])$ENV{previos_machine_name}(\b|[[:^alnum:]])/) { print STDOUT $_; }' file
如果打印出空,则表示不存在旧主机名。