Bash

用 fqdn 替換文件中的伺服器短名稱的 bash 腳本

  • March 29, 2016

我有一個相當大的配置文件,其中包含伺服器短名稱,如下所示:

[host 1]
host = server1

[host 2]
host = server2

[host 3]
host = server3

我需要將所有伺服器短名稱替換為 fq 長名稱,這些名稱將從我已經編寫的 bash 腳本 lookup.sh 中輸出。我可以使用一些 sed 或 awk 魔法來完成這項任務嗎?

您的問題暗示使用sedor awk,但您沒有明確排除perl😉

#!/usr/bin/perl
while (<>)
{
   if (/^host = (.+)/) {
       print "host = " . `./lookup.sh $1`;
   }
   else { 
       print;
   }
}

經過進一步思考,同樣可以awk如下進行:

#!/bin/bash

INFILE=$1

awk 'BEGIN { FS = " = " } ; {
       if ($1 == "host") {
               "'"./lookup.sh "'" $2 | getline fqdn
               $2 = "="; $3 = fqdn
       }
       print
}' $INFILE

引用自:https://unix.stackexchange.com/questions/272678