【发布时间】:2020-06-12 21:21:28
【问题描述】:
我正在尝试在位于不同列的两个正则表达式之间打印文件中列的内容。示例文件如下所示
Run Summary Paddle Status = 613 (hex 265) Cd+Bi paddle
Run To Time Current C mon Ufis Charge
(sec) (uA) (uC)
23626 35950 1797.5 99.0 5.641e+05 2.289e+06 1.779e+05
23630 34587 1729.3 104.9 5.439e+05 2.234e+06 1.815e+05
23634 34982 1749.1 92.8 5.526e+05 2.100e+06 1.623e+05
23638 35950 1797.5 95.0 5.698e+05 2.204e+06 1.707e+05
23642 36135 1806.8 99.6 5.710e+05 2.317e+06 1.800e+05
23646 36130 1806.5 100.0 5.747e+05 2.322e+06 1.807e+05
23650 36121 1806.0 100.2 5.733e+05 2.324e+06 1.810e+05
23654 36123 1806.2 100.2 5.752e+05 2.323e+06 1.809e+05
Sum 2418821 120941.1 3.772e+07 1.513e+08 1.193e+07
Run Summary Paddle Status = 357 (hex 165) Cd paddle
Run To Time Current C mon Ufis Charge
(sec) (uA) (uC)
23625 36001 1800.0 100.8 3.342e+05 2.329e+06 1.814e+05
23629 36132 1806.6 100.8 3.307e+05 2.343e+06 1.821e+05
23633 35882 1794.1 97.6 3.565e+05 2.257e+06 1.751e+05
23637 36139 1807.0 99.3 3.545e+05 2.307e+06 1.795e+05
23641 36133 1806.7 99.3 3.598e+05 2.307e+06 1.794e+05
23645 36144 1807.2 99.7 3.635e+05 2.315e+06 1.802e+05
23649 36132 1806.6 100.1 3.648e+05 2.321e+06 1.808e+05
23653 36123 1806.2 100.1 3.695e+05 2.318e+06 1.808e+05
23657 36152 1807.6 99.9 3.684e+05 2.318e+06 1.805e+05
Sum 2404062 120203.1 2.186e+07 1.505e+08 1.193e+07
我需要做的是打印出现在正则表达式Cd+Bi 之后的两行之间的第一列,并且不包括第一次出现的Sum。然后对正则表达式Cd 重复相同的操作。我的输出将是两个文件(尽管这并不严格),它们将具有以下内容
使用Cd+Bi 归档
23626
23630
23634
23638
23642
23646
23650
使用Cd 归档
23625
23629
23633
23637
23641
23645
23649
23653
23657
我尝试使用以下 oneliner,但无法重现我想要的内容。
- 这不会打印任何东西
awk '$9 ~ /Cd+Bi/, $1 ~ /Sum/' file - 这将打印所有包含 Sum
awk '$9 ~ /Cd+Bi/{flag=1;next}$1 ~ /Sum/' file的行
知道如何产生所需的输出吗?
【问题讨论】: