Файл содержит список команд, где каждая команда имеет строку, которую нужно заменить строкой в ​​переменной

Вам нужно сделать несколько вещей.

  1. Установить первую строку скрипта на #!/usr/bin/awk -f(, см.https://stackoverflow.com/q/1418245/537980)
  2. Установить права доступа к файлу для разрешения выполненияchmod +x awk-script
  3. Запустите скрипт, например. если скрипт находится в текущем каталоге./awk-script

-3
24.04.2020, 21:13
2 ответа

Создайте скрипт 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
0
19.03.2021, 02:25
#!/bin/bash
while read reptext; do
  sed -e "s/host_name/$reptext/" $2
done < $1

Должно быть понятно. Если вам нужна дополнительная информация, дайте мне знать.

отредактируйте :в соответствии с действительным комментарием Кусалананды.

0
19.03.2021, 02:25

Теги

Похожие вопросы