Я поместил ваш пример в файл с именем input.txt
$ cat input.txt
define command {
command_name check_nrpe_aix_load
command_line $USER1$/check_nrpe -p $USER11$ -H $HOSTADDRESS$ -a $ARG1$ $ARG2$ ARG3$
}
define command {
command_name check_nrpe_aix_cpu_stats
command_line $USER1$/check_nrpe -p $USER11$ -H $HOSTADDRESS$ -a $ARG1$ $ARG2$
}
Теперь, если вы запустите:
awk 'BEGIN {OFS=""} {if ($0 ~ /check_nrpe_aix/) print $0,"_SOMESTRING";else print $0}' input.txt
, вы должны получить ожидаемый результат:
$ awk 'BEGIN {OFS=""} {if ($0 ~ /check_nrpe_aix/) print $0,"_SOMESTRING";else print $0}' input.txt
define command {
command_name check_nrpe_aix_load_SOMESTRING
command_line $USER1$/check_nrpe -p $USER11$ -H $HOSTADDRESS$ -a $ARG1$ $ARG2$ ARG3$
}
define command {
command_name check_nrpe_aix_cpu_stats_SOMESTRING
command_line $USER1$/check_nrpe -p $USER11$ -H $HOSTADDRESS$ -a $ARG1$ $ARG2$
}
Разбивка:
OSF - это разделитель выходного поля. Я установил его пустым, чтобы он не добавлял пробел при добавлении «_SOMESTRING» в строку
Команда
if ($0 ~ /check_nrpe_aix/) print $0,"_SOMESTRING";
будет искать выражение «check_nrpe_aix» и печататьцелая строка ($ 0) плюс «_SOMESTRING», разделенные OSF
Команда, иначе выведите $ 0}
, чтобы напечатать всю строку без изменений, если она не соответствует условию предыдущей команды