每小时在文件内搜索字符串的脚本

每小时在文件内搜索字符串的脚本

我需要编写一个脚本,其中应在文件中每小时搜索特定字符串(字母数字),搜索范围为全天。并且搜索不应包含前一小时的结果。

文件内的时间戳格式为“2014-02-17 17:00:01”

以下命令将提供全天计数的输出,但我需要每小时计数。

grep “recFileChg:true” *.tmp | awk -F “|” '{打印 $4,$29}' | cut -d “,”-f1,2 | awk -F “[” '{打印 $1,$2}'

如果有人能帮助我,我将非常感激。

答案1

好吧,如果能有一条您拥有的线和一条您想要得到的线作为搜索结果那就太好了。

无论如何,我认为只需使用 grep 和 cut 即可解决:

grep "recFileChg:true" *.tmp | cut -f2- -d':' | cut -f2 -d'[' | cut -f1 -d':'
  • 第一次剪切将从 grep 输出中删除文件名
  • 第二次剪切将删除“[”字符之前的所有内容
  • 最后一次剪切将剪掉日期和时间

答案2

为了实现你想要的效果,一个更简单的方法是在脚本执行结束时记录此文件中的行数并将其存储在文件中。下次,即接下来的一个小时的运行,可以将搜索范围设置为从此行号 +1 到文件末尾。一个粗略的例子如下:

# assuming the number of lines in file at the last run was recorded 
# in a file called `lastrun`

s=$(cat lastrun)

sed -e "1,${s}d" > searchscope
grep ...blah-blah | cut .. blah-blah searchscope
rm  searchscope

cat myfile|wc -l > lastrun

并根据您的心意将其放入每小时循环或放置在 cron 中。

相关内容