Bash
用 fqdn 替換文件中的伺服器短名稱的 bash 腳本
我有一個相當大的配置文件,其中包含伺服器短名稱,如下所示:
[host 1] host = server1 [host 2] host = server2 [host 3] host = server3
我需要將所有伺服器短名稱替換為 fq 長名稱,這些名稱將從我已經編寫的 bash 腳本 lookup.sh 中輸出。我可以使用一些 sed 或 awk 魔法來完成這項任務嗎?
您的問題暗示使用
sed
orawk
,但您沒有明確排除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