【发布时间】:2019-05-25 20:38:26
【问题描述】:
我正在尝试过滤我的 git 存储库中文件的历史内容。某些文件中有一行包含字符串“BEAM:A_BOOK”,并且在该行的第 7 个逗号分隔值中是我要检索以进行进一步处理的值。我认为,理想情况下,我最终会得到类似字典的东西,其中包含提交的 SHA-1 哈希,以及该文件过去版本的 A_BOOK 值。
文件前几行的示例。请注意,我希望从此版本的文件中检索的值是“56.0”:
# Date: 2018-12-21 01:49:16.888PV,SELECTED,TIMESTAMP,STATUS,SEVERITY,VALUE_TYPE,VALUE,READBACK,READBACK_VALUE,DELTA,READ_ONLY
REA_EXP:LINE,0,1544047322.881066957,NO_ALARM,NONE,enum,"JENSA~[UDF;AT-TPC;GPL;JENSA]",,"---",,true
REA_BTS19:BEAM:OPTICSFILE,0,1541798820.065952460,NO_ALARM,NONE,string,"BTS19_test3.data",,"---",,true
REA_BTS19:BEAM:A_BOOK,0,1545322510.562031883,NO_ALARM,NONE,double,"56.0",,"---",,true
最终,我将扩展它以检索几个值并进行一些数学运算以执行更复杂的过滤。更多背景信息:我们将用于核物理实验的离子束的原子质量和电荷值存储在版本控制下的文本文件中。这些文本文件充当我们的“保存集”,并充满了更多的质量和电荷信息,因为它们还包括如果我们想再次运行该光束,我们将恢复的机器值。我的目标是通过我们运行的光束的电荷:质量比过滤这些文件。
到目前为止,这似乎获得了我的大部分信息:
git grep 'BTS19:BEAM:A_BOOK' $(git rev-list --all) | grep RFQ-JENSA_Setpoint.snp
吐出这样的东西:
16eca44985214b790eb6ca8241ad86728b4fd3ae:RFQ-JENSA_Setpoints.snp:REA_BTS19:BEAM:A_BOOK,0,1531323944.085330133,NO_ALARM,NONE,double,"2.0",,"---",,true
6e585c905444f25e18edfe1eeb32ced2de72ed7c:RFQ-JENSA_Setpoints.snp:REA_BTS19:BEAM:A_BOOK,0,1531323944.085330133,NO_ALARM,NONE,double,"2.0",,"---",,true
bc202d5f21f9829fa3701ca636657ee1b0a73e25:RFQ-JENSA_Setpoints.snp:REA_BTS19:BEAM:A_BOOK,0,1531323944.085330133,NO_ALARM,NONE,double,"2.0",,"---",,true
etc...
但是,我希望看到类似的内容:
<hash>:<Retrieved A_BOOK Value>
或者,根据我刚刚展示的输出,我希望看到这样的结果:
16eca44985214b790eb6ca8241ad86728b4fd3ae:2.0
6e585c905444f25e18edfe1eeb32ced2de72ed7c:2.0
bc202d5f21f9829fa3701ca636657ee1b0a73e25:2.0
etc...
并最终包含一些数学以显示更有意义的内容:
<hash>:<Retrieved Q_BOOK Value>/<Retrieved A_BOOK Value>
有没有更好的方法来解决这个问题? 检索此信息的好方法是什么?
谢谢!
【问题讨论】: