如何检查输入的数据是否存在于unix的日志文件中?

时间:2016-07-01 04:23:43

标签: bash datetime unix sed

我有一个包含以下数据的日志文件

Apr 10 16 02:07:20  Data 1
Apr 11 16 02:07:20  Data 1
May 10 16 04:11:09  Data 2
May 12 16 04:11:09  Data 2

我必须检查输入的数据是否存在于我的文件中。如果没有,则应显示错误。我使用以下代码。

if [ ! -d "$StartTime" ]
then
{
echo " $StartTime does not exists in the file"
exit
}
fi

其中"$StartTime"存储Apr 10 16 02:07:20日期。我应该在哪里指定logfilename?

2 个答案:

答案 0 :(得分:2)

您可以按如下方式编写:

StartTime="02:08:20"
if [ `grep -c "$StartTime" *` -eq 0 ]
    then echo " $StartTime does not exist in the files"
fi
  • grep匹配搜索字符串,-c匹配匹配次数
  • if匹配的行数-eq也就是等于0,打印不匹配

答案 1 :(得分:1)

无需计算条目数。 grep将失败(例如,如果找不到搜索字符串,则返回退出状态1

StartTime="02:07:20"
if grep -q "${StartTime}" test.log;then
    echo " $StartTime does not exist in the files"
    exit 1
fi