计算两个日期和时间戳之间的行数

问题描述 投票:0回答:1

当进程转到第二天的 nohup 脚本时,需要创建新的日志文件。

以下是日志数据

script.ksh 2024/02/19 23:59:59
script.ksh 2024/02/20 00:00:00
script.ksh 2024/02/20 00:00:01

我正在寻找第二天到达时的 grep 脚本,但它不起作用。尝试获取计数,但它始终为 0,即使日志中有匹配的数据。

grep -E '2024/02/20' | wc -l
sed -n '\#2024/02/20 00:00:0#, \2024/02/20 00:00:0#p'| wc -l

尝试使用 grep -E 和 SED。 grep -E 和 sef 无法在脚本中进行 grep,但可以在命令行中使用,而不是在 nohup 中使用

awk sed grep
1个回答
1
投票

我将利用 GNU

AWK
来完成此任务,让
file.txt
内容为

script.ksh 2024/02/19 23:59:59
script.ksh 2024/02/20 00:00:00
script.ksh 2024/02/20 00:00:01

然后

awk '{d=$2;gsub(/[^[:digit:]]/,"",d);print $0 > ("file" d ".txt")}' file.txt

创造

file20240219.txt
持有

script.ksh 2024/02/19 23:59:59

file20240220.txt
持有

script.ksh 2024/02/20 00:00:00
script.ksh 2024/02/20 00:00:01

说明:我将第二个字段值存储在变量

d
中,然后删除
d
中的所有非数字(请注意,在文件名中使用
/
是个坏主意,因为它看起来像路径,如果您发现 8 位数字不可读,则可能会选择替换为
_
而不是空字符串,这将导致
2024_02_19
2024_02_20
)。然后我将当前行 (
print
) 保存到名为
$0
的文件中,然后是存储在变量 d 中的内容,然后是
file
免责声明
此解决方案假设文件中的不同天数少于 GNU .txt 能够一次打开的文件数。

(在 GNU Awk 5.1.0 中测试)

© www.soinside.com 2019 - 2024. All rights reserved.