Bash脚本中如何按环境分组关联多行文本生成指定格式?
解决方案
你可以使用以下awk命令实现需求:
awk '/^Environment/{env=$0; next} /^GATEWAY TEST/{gw=$0; next} /^EXECUTION-RESULT/{print env","gw","$0}' input.txt
命令逻辑说明:
- 匹配以
Environment开头的行:保存当前环境到变量env,跳过后续处理(next) - 匹配以
GATEWAY TEST开头的行:保存当前网关测试项到变量gw,跳过后续处理 - 匹配以
EXECUTION-RESULT开头的行:将之前保存的env、gw和当前结果行用逗号拼接后打印
原命令失效原因:
你之前的命令会把每个非Environment的行单独和环境行拼接输出,导致GATEWAY TEST和EXECUTION-RESULT各占一行,无法形成完整的单条测试项记录。
执行效果
假设输入文件名为input.txt,执行命令后会输出:
Environment: MS001,GATEWAY TEST: CV_ST,EXECUTION-RESULT: 0 Environment: MS001,GATEWAY TEST: CV_T2,EXECUTION-RESULT: 0 Environment: MS001,GATEWAY TEST: CVI_T,EXECUTION-RESULT: 0 Environment: MT01,GATEWAY TEST: S_C,EXECUTION-RESULT: 0
内容的提问来源于stack exchange,提问作者Avellino
相关产品推荐
相关产品推荐

