
次の内容を含むファイルがあります。
10.48.29.68 doggy
10.65.8.184 kitty
10.48.15.104 froggy
bc group
このファイルの内容をホストファイルの行の後にホストファイルに挿入する必要があります。
サーバーのホストファイルにはすでに何百ものエントリがあります。 Bc はホストファイルのグループです。上記のファイルからIPアドレスとホスト名を読み、そのエントリをホストファイルヘッダーの下に置くコードが必要ですbc group
。
上記の新しいファイルは、ホストファイルのキーワードの後に作成する必要がありますbc group
。
たとえば、私のホストファイルに次の行が含まれているとします。
10.59.12.232 bc4
10.48.29.68 xy9
bc group
10.63.71.136 bc2
10.63.71.214 bc3
ホストファイルを次に変換する必要があります。
10.59.12.232 bc4
10.48.29.68 xy9
bc group
10.48.29.68 doggy
10.65.8.184 kitty
10.48.15.104 froggy
10.63.71.136 bc2
10.63.71.214 bc3
最初のファイルのすべての行をbc group
ホストファイルの行に追加してから、ホストファイルの残りの行を引き続き追加する必要があります。
答え1
この試み:
sed '/^bc group$/ r file1' hostfile
このsed
コマンドは、の行をhostfile
出力にコピーし、次の行のすべてのfile1
行を読み込みます(挿入)。bc group
hostfile
出力を別のファイルに保存するには、> newhostfile
次のコマンドに追加します。
sed '/^bc group$/ r file1' hostfile > newhostfile
しかし、私はこの方法をお勧めします。つまり、バックアップにサフィックスを使用し、.bak
ファイルを適切に編集することです。
sed -i.bak '/^bc group$/ r file1' hostfile
行bc group
が複数回表示されると、hostfile
行はfile1
複数回挿入されます。
答え2
次のようなものが必要なようです。
INPUT_FILE='/path/to/file'
GROUP_NAME='# bc group'
HOSTS_FILE='/etc/hosts'
echo "$GROUP_NAME" >> "$HOSTS_FILE"
while read line; do
echo "$line" >> "$HOSTS_FILE"
done < "$INPUT_FILE"
スクリプトは最初に$HOSTS_FILE
スクリプトの後に追加(コメント)されます$GROUP_NAME
。次に、入力ファイルの各行を繰り返して、グループ名の下のホストファイルに追加します。