gpt4 book ai didi

linux - Bash - 打印文件中的所有连续行并忽略非连续行

转载 作者:太空宇宙 更新时间:2023-11-04 04:56:41 28 4
gpt4 key购买 nike

我需要根据第四列中的序列从文本文件中提取所有连续行。该序列是当前时间,每秒只有一个条目(因此只有一行)。有时,在文件中,序列会中断,因为某些东西减慢了创建它的脚本的速度,并且它跳过了一两秒。如下例所示:

Thu Jun  8 14:17:31 CEST 2017 sync:1
Thu Jun 8 14:17:32 CEST 2017 sync:1
Thu Jun 8 14:17:33 CEST 2017 sync:1
Thu Jun 8 14:17:37 CEST 2017 sync:1 <--
Thu Jun 8 14:17:38 CEST 2017 sync:1
Thu Jun 8 14:17:39 CEST 2017 sync:1
Thu Jun 8 14:17:40 CEST 2017 sync:1

我需要 bash 忽略这一行并继续而不打印它,但仍然打印它之前和之后的所有内容。我该怎么办?

最佳答案

如果您只关心秒字段(例如,14:17:39 -> 15:22:40 显然不是连续的,但此代码会认为它是连续的;如果您的数据足够简单,这可能没问题):

awk 'NR==1 || $6 == (p + 1)%60 ; {p=$6}' FS=':\| *' input

要检查小时和分钟,您可以简单地从午夜转换为秒,或者添加逻辑来比较小时和分钟。像这样的东西:

awk '{s=$4 * 3600 + $5 * 60 + $6} NR==1 || s == (p + 1)%86400 ; {p=s}' FS=':\| *' input 

关于linux - Bash - 打印文件中的所有连续行并忽略非连续行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44436455/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com