bash - 当特定字符串出现时打印它们每次出现
问题描述
当出现特定字符串时,每次出现时都会打印它们。
例如,如果input_file.txt
如下文本
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_size(byte)”和“packet_datarate(bits/CLK)出现在我input_file.txt
的如下图所示时,我想打印输出如下
Output_file.txt
payload_sizes (bytes) : 1,2,3,4,5,6....10
packet_datarate (bits/clk):11,22,33,44,55,.....20
payload_sizes (bytes) : 100,202,303,405,5,6....10
packet_datarate (bits/clk): 11,22,33,44,55,.....20
payload_sizes (bytes) : 13,24,35,45,55,65....10
packet_datarate (bits/clk): 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 }' input_file.txt >> output_file.txt
解决方案
试试这个管道,它有效
grep 'payload_sizes\|packet_datarate' input_file.txt | sed "s/{\|}//g"
sed 部分是删除 } 和 {
推荐阅读
- c++ - 程序执行后堆内存是否会被释放?
- linux - 是否可以使 Bash“源”命令保留手动传入的环境变量?
- android - 参数未按预期工作的Android webview
- flutter - textScaleFactor 是呈现响应式文本吗?
- python - Python的执行过程是怎样的?
- php - 共享会话表在本机和 laravel 应用程序的表中有两个条目
- html - 有没有办法在不给它背景的情况下用另一个元素阻止一个元素?
- flutter - 如何使用rest api将谷歌用户(使用谷歌登录)数据保存到我的服务器中?
- python - 将特定行添加到文本文件
- android - 撰写布局垂直对齐:SpaceBetween 没有影响