linux - 将字符串附加到以某些字符开头的每个匹配模式
问题描述
我正在尝试使用 awk 或 sed 将字符串“_SOMETHING”附加到以“check_nrpe_aix”开头的文件中的每个现有字符串
前 :
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$
}
后 :
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$
}
解决方案
我将您的示例放在名为 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) 加上由 OSF 分隔的“_SOMESTRING”
命令 ;else print $0}
如果与前一个命令的条件不匹配,将打印整行而不作任何更改
推荐阅读
- passwords - 将用户密码从 sha512 迁移到 pbkdf2-sha512 用于 keycloak
- r - 在R中按组添加观察编号
- handsontable - Handsontable 7.4 具有虚假值 (0) 的下拉单元格显示占位符
- graphql-spqr - Graphql Schema doku 使用 Input 自动显示 Input 类型
- python - 用于存储和刷新 google oauth2 凭据的常见 Python 设计模式有哪些?
- vuetify.js - GitHub Actions 中的 Cypress 不会在 Vue CLI/Vuetify 应用程序中加载 CSS
- github-actions - Github 在特定目标分支上操作“pull_request_review”
- ruby - Fastlane 在 Jenkins google-api-client-0.38.0 上失败需要 ruby 版本 ~> 2.4
- apache-flink - Flink UI 认证
- java - JavaCv - 在 javacv 中使用分类器文件