bash - 当特定字符串出现在该行上时合并所有行
问题描述
例如,当行首出现某个字符串时,我希望它们合并在一起
我的文本文件中有多次如下内容,然后我想合并从payload_sizes(字节)开始的所有行
PerformanceINFO
UVM_INFO_PERF ****NIB-FIB Axis Interface Per-packet Performance Report****
interface_name : NIB-FIB,
payload_sizes (bytes) : {1,2,3,4,5,6....10, }
packet_datarate (bits/clk): {11,22,33,44,55,.....20, }
interface_name : NIB-FIB,
payload_sizes (bytes) : {100,202,303,405,5,6....10, }
packet_datarate (bits/clk): {11,22,33,44,55,.....20, }
interface_name : NIB-FIB,
payload_sizes (bytes) : {13,24,35,45,55,65....10, }
packet_datarate (bits/clk): {11,22,33,44,55,.....20, }
所以我期待的是我想合并所有以“payload_sizes(bytes) 合并在一行和”packet_datarate(bits/clk) 开头的行合并在一起
Output should look like this
payload_sizes(bytes): 1,2,3,4,5,6....10,100,202,303,405,5,6....10,13,24,35,45,55,65....10
packet_datarate(bits/clk):11,22,33,44,55,.....20,11,22,33,44,55,.....20,11,22,33,44,55,.....20
解决方案
awk -F: '/packet_datarate/ {
packt=packt""gensub(/[ {}]/,"","g",$2)
}
/payload_sizes/ {
payl=payl""gensub(/[ {}]/,"","g",$2)
}
END {
print "payload_sizes(bytes):,"payl;
print "packet_datarate(bits/clk):,"packt
}' filename
一个班轮:
awk -F: '/packet_datarate/ { packt=packt""gensub(/[ {}]/,"","g",$2) } /payload_sizes/ { payl=payl""gensub(/[ {}]/,"","g",$2) } END { print "payload_sizes(bytes):,"payl;print "packet_datarate(bits/clk):,"packt }' filename
处理文件的每一行并搜索“packet_datarate”。如果存在,则取第二个 : 分隔字段并去除所有空格 { 和 }。将剩余文本 (str) 添加到变量 packt。对“payload_sizes”执行相同的操作,将数据添加到变量 payl。最后,打印以正确方式格式化的两个变量。
推荐阅读
- c# - C# Exceptioncontext 的异常转换为自定义异常给出 null
- java - 从另一个可观察的流中提取 LIFO 数据发射?
- botframework - Botframework:有多少对话存储在 DirectLineClient.Conversations.GetActivitiesAsync 方法中?
- php - 数组元素未显示为相等
- kubernetes - 默认情况下,OpenEBS NDM(节点磁盘管理器)以特权模式运行。我们可以在 OpenEBS 中以非特权模式运行它吗?
- drools - Drools 异常抖动
- javascript - Firebase 电子邮件链接身份验证
- php - 在 Woocommerce 中按品牌和标题对产品进行排序
- r - tryCatch 未捕获错误并跳过错误参数
- machine-learning - 用外行的话来说,LossFunction 和 OptimizationAlgorithm 有什么区别?