Проверьте из этих ответов.
Я поддерживаю совет Эда и Дэвида (и задним числом, весь этот пост мог бы быть комментарием, а не ответом), что awk / sed может быть не лучшим инструментом для этой работы, и вы захотите сделать шаг назад и переосмыслить процесс. Есть целая куча вещей, которые могут пойти не так; значения массива могут быть заполнены неправильно, нет проверки, что существует достаточно значений для всех подстановок, и, в конце концов, вы не можете откатить изменения обратно.
Тем не менее, вот отправная точка, просто чтобы проиллюстрировать некоторые sed. Он, конечно, не самый производительный и работает только для GNU sed, но обеспечивает требуемый вывод
#!/bin/bash
declare -a array
array=(value11111 value22222 value33333)
for a in "${array[@]}"; do
# Use sed inline, perform substitutions directly on the file
# Starting from the first line, search for the first match of `config name AAAAA`
# and then execute the substitution in curly brackets
sed -i "0,/config name AAAAA/{s/config name AAAAA/config name $a/}" yourinputconfigfile
done
# yourinputconfigfile
config name value11111
root root
port number 00000
Hostname hahahahah
config name value22222
root less
port number 00001
Hostname nonononono
config name value33333
root less
port number 00002
Hostname nonononono