Вам нужно сделать несколько вещей.
#!/usr/bin/awk -f
(, см.https://stackoverflow.com/q/1418245/537980)chmod +x awk-script
./awk-script
Создайте скрипт awk
, который читает два файла один за другим и выполняет подстановку:
awk 'FNR == NR { cmd[++n] = $0; next }
{
for (i = 1; i <= n; ++i) {
command = cmd[i]
sub("host_name", $0, command)
print command
}
}' File2.txt File1.txt
Это считывает команды из File2.txt
в массив с именем cmd
. При чтении File1.txt
строка host_name
в каждой команде заменяется именем хоста, считанным из файла, и печатается измененная команда.
Результат, учитывая данные в вопросе, будет
command1 host1 morestuff
command2 host1 mnorestuff
command1 host2 morestuff
command2 host2 mnorestuff
command1 host3 morestuff
command2 host3 mnorestuff
#!/bin/bash
while read reptext; do
sed -e "s/host_name/$reptext/" $2
done < $1
Должно быть понятно. Если вам нужна дополнительная информация, дайте мне знать.
отредактируйте :в соответствии с действительным комментарием Кусалананды.