【发布时间】:2014-06-27 16:10:28
【问题描述】:
我有一个包含以下示例文本的文件。 (实际文字很大)。
2014/05/08-19:15:44.544824-<String1>
2014/05/08-19:21:54.544824-<String2>
2014/05/08-19:34:59.564461-<String3>
我必须在两个时间戳之间提取数据,例如 19:15:00 - 19:20:00 等等,直到 eof。我尝试过使用 sed & awk,但问题是在某些时候它们会给出所有的东西。 (例如,他们会从 19:15:00 --> EOF 开始分发所有内容)。我使用的命令是
awk '/19:15:00/,/19:20:00/' InputFile
和
sed '/19:15:00/,/19:20:00/p' Inputfile.
关于如何在 perl 或 sed & awk 中执行此操作的任何想法,这实际上可能有效吗?错误的输出是否与时间戳的格式有关? (只是想)
PS。我正在使用以下代码制作时间戳。 (这可能是因为本地时间功能吗?
$curr = timelocal(0, 0, 0, (split /\//, $ARGV[0])[1], (split /\//, $ARGV[0])[0]-1, (split /\//, $ARGV[0])[-1]);
$currentTime = strftime "%H:%M:%S", localtime($curr);
【问题讨论】:
-
我知道你的数据比较大,但是没有理由只给出三行样本。对我们测试我们的解决方案没有任何用处,并且您没有指出,例如,数据是否已经按时间升序排序。我不知道限制是什么,但是您可以发布大量代码行。如果样本的大小会干扰帖子的可理解性,那么它是否会缩小为滚动块,所以请不要限制示例数据的大小
-
谢谢,这是个好建议,我会记住的。
标签: perl time awk sed timestamp