在 bash 脚本中的表达式后面每两行连接

问题描述 投票:0回答:1

我有以下文本文件,其中包含:

Environment: MS001
GATEWAY TEST: CV_ST
EXECUTION-RESULT: 0
GATEWAY TEST: CV_T2
EXECUTION-RESULT: 0
GATEWAY TEST: CVI_T
EXECUTION-RESULT: 0
Environment: MT01
GATEWAY TEST: S_C
EXECUTION-RESULT: 0

我想得到这个结果

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 

基本上按环境对每个 gw 进行分组,我正在尝试这个,但我无法得到它

 awk -F: '/^Environment/{ITM=$0} !/^Environment/{print ITM"=>"$0}'

bash shell awk text sed
1个回答
0
投票

如果该行以

Environment
开头,则将其存储在变量中。否则,它将打印最后存储的行和当前的两行,以逗号分隔:

awk '/^Environment/ {h=$0; next} {a=$0; getline; print h "," a "," $0}'
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

使用 mawk 1.3.4、nawk 20231228 和 GNU Awk 5.3.0 进行测试

© www.soinside.com 2019 - 2024. All rights reserved.