【发布时间】:2013-11-21 05:50:28
【问题描述】:
好的,我将尝试在这里描述我的问题。我有一个看起来像这样的文件:
斯塔 WP00 34.07335 -106.91932 1.43
时间 10/23/2013 20:10:17
净XO
数据记录器 Passcal_q330_linear 0100000EAA23E50F # 2847
传感器 trillium_240_2 0 583
axis Z 0 0 - 1 1
axis N 0 90 - 2 1
axis E 90 90 - 3 1
samplerate 40sps
channel Z BHZ 00
channel N BHN 00
channel E BHE 00
samplerate 1sps
channel Z LHZ 00
channel N LHN 00
channel E LHE 00
添加
关闭传感器 trillium_240_2 10/23/2013 20:10:17
传感器 trillium_120 0 279
axis Z 0 0 - 4 1
axis N 0 90 - 5 1
axis E 90 90 - 6 1
samplerate 40sps
channel Z BHZ 01
channel N BHN 01
channel E BHE 01
samplerate 1sps
channel Z LHZ 01
channel N LHN 01
channel E LHE 01
添加
关闭传感器 trillium_120 10/23/2013 20:10:35
#斯塔 WP00 34.07335 -106.91932 1.43
时间 10/28/2013 20:20:28
净XO 数据记录器 Passcal_q330_linear 0100000EAA23E50F # 2847
传感器 trillium_240_2 0 583
axis Z 0 0 - 1 1
axis N 0 90 - 2 1
axis E 90 90 - 3 1
samplerate 40sps
channel Z BHZ 00
channel N BHN 00
channel E BHE 00
samplerate 1sps
channel Z LHZ 00
channel N LHN 00
channel E LHE 00
添加
关闭传感器 trillium_240_2 10/28/2013 20:20:28
传感器 trillium_120 0 268
axis Z 0 0 - 4 1
axis N 0 90 - 5 1
axis E 90 90 - 6 1
samplerate 40sps
channel Z BHZ 01
channel N BHN 01
channel E BHE 01
samplerate 1sps
channel Z LHZ 01
channel N LHN 01
channel E LHE 01
添加
关闭传感器 trillium_120 10/28/2013 20:20:45
很抱歉给你这么长的文件,但我想确保你能看到所有内容。每个站有更多的元数据块(sta,在这种情况下是 WP00)。我想替换第一个和第二个“close”语句的时间,
即关闭传感器 trillium_240_2 10/23/2013 20:10:17 和 关闭传感器 trillium_120 10/23/2013 20:10:35 与第三个结束声明的日期和时间。因此,我希望他们读取关闭传感器 trillium_240_2 10/28/2013 20:28:28 并关闭传感器 trillium_120 10/28/2013 20:28:28,依此类推,以此类推每个站点条目块。
换一种说法,我想使用第二个匹配的关闭语句时间和日期来替换它之前的前两个。或者您可以将其视为第 3 个匹配的关闭语句时间和日期,替换前两个匹配的时间和日期。
另外,为了让这更难,如果这是最后一个车站入口,我想将关闭时间和日期设为 12/31/2500 23:59:59。
我有这个文本文件,我正在按站循环,所以我希望能够为任何第 n 个条目自动执行此操作。我尝试过以各种方式使用 grep、awk 和 sed 来让这个逻辑工作,但似乎无法弄清楚。任何帮助或推动正确的方向都会很棒。提前致谢!
【问题讨论】: