linux - AWK:使用字段分隔符连接匹配模式
问题描述
输入文件:
cat /tmp/filename
app_name="MysqlCluster"
whatever whatever
whatever whatever
whatever whatever
whatever whatever
region="Europe"
预期输出:
MysqlCluster_Europe
尝试:
root@localhost:~# awk -F\" '/app_name|region/ {printf "%s_", $2}' /tmp/filename
MysqlCluster_Europe_root@localhost:~#
root@localhost:~# awk -F\" '/app_name|region/ {OFS="_"; printf "%s", $2}' /tmp/filename
MysqlClusterEuroperoot@localhost:~#
root@localhost:~# awk -F\" '/app_name|region/ {printf "%s_", $2} END{print} ' /tmp/filename
MysqlCluster_Europe_
And few other attempts on similar lines but have not been successful.
我在寻找:
root@localhost:~# awk <here goes some awk magic> /tmp/filename
MysqlCluster_Europe <<< NOTE: No Underscore at the end
解决方案
以下将适用于您的示例。(虽然它不会打印换行符。)
awk -F\" '/^(app_name|region)/ { printf "%s%s", s, $2; s="_" }' /tmp/filename
根本不减少您的工作量,但处理app_name
和region
两个单独的操作会更实用 imo,这样它也将支持多个 app_name-region 对。
awk -F\" '/^app_name/ { printf "%s_", $2 } /^region/ { print $2 }' /tmp/filename
推荐阅读
- python - PySpark Dataframes:带条件的完全外连接
- java - 可以为 JAVA 中的特定模块/层配置属性文件吗?
- excel - 如何创建一个在列表框中返回名称和两个复选框选项的用户窗体?
- vba - 多选形状,并根据 PowerPoint 幻灯片中的条件取消选择特定形状
- flutter - 我如何从本地资产文件夹中将自定义 css 和 js 文件注入到我的颤振 webview 中
- excel - 使用 VBA 将 Excel 中的多列导出到单个文本文件
- javascript - Nodejs Date() “小时”不同于 getHours()
- csv - 如何使用 apache-nifi 映射来自两个流文件的数据
- qt - 嵌入式 QT5.12.3:QWidget::paintEngine:不应再调用”
- asp.net-mvc - CWE-201:通过发送数据公开信息