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

Bash 如何在unix中检查输入的数据是否存在于日志文件中?,bash,datetime,unix,sed,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

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

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
日期。我应该在哪里指定日志文件名?

您可以按如下方式编写:

StartTime="02:08:20"
if [ `grep -c "$StartTime" *` -eq 0 ]
    then echo " $StartTime does not exist in the files"
fi
  • grep
    用于匹配搜索字符串,而
    -c
    用于匹配计数
  • 如果
    匹配行计数
    -eq
    aka等于0,则打印不匹配

您可以这样写:

StartTime="02:08:20"
if [ `grep -c "$StartTime" *` -eq 0 ]
    then echo " $StartTime does not exist in the files"
fi
  • grep
    用于匹配搜索字符串,而
    -c
    用于匹配计数
  • 如果
    匹配行计数
    -eq
    aka等于0,则打印不匹配

无需统计条目数量
grep
将失败(即,如果未找到搜索字符串,则返回退出状态
1

StartTime=“02:07:20”
如果grep-q“${StartTime}”test.log;那么
echo“$StartTime在文件中不存在”
出口1
fi

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

StartTime=“02:07:20”
如果grep-q“${StartTime}”test.log;那么
echo“$StartTime在文件中不存在”
出口1
fi

我已经将
4月10日16 02:07:20
存储在
$StartTime
中。我可以知道我们为什么使用
*|wc-l
-eq 0`?它在GIT Bash中可以工作吗?@Vishwaroopa,不确定GIT Bash是否可用,如果命令可用,您可以尝试一下。大多数命令在flavors上可用。您可以随心所欲设置StartTime。谢谢。我在哪里可以指定我的日志文件名?它必须检查日志1中是否存在
$StartTime
Apr 10 16 02:07:20
中的日期。日志(文件名)注意:不需要管道连接到
wc-l
,这就是
grep-c
的目的。
:)
@Vishwaroopa,您可以将
*/code>中的
grep
替换到特定文件,或使用
log1*
匹配以
log1开始的任何文件
我已经存储
Apr 10 16 02:07:20
in
$StartTime
。我可以知道我们为什么使用
*| wc-l
-eq 0`吗?它在GIT-Bash中能工作吗?@Vishwaroopa,不确定GIT-Bash,如果命令可用,您可以试试。它们大多有不同的口味。你可以随意设定开始时间。谢谢。在哪里可以指定日志文件名?它必须检查日志1中是否存在
$StartTime
Apr 10 16 02:07:20
中的日期。日志(文件名)注意:不需要管道到
wc-l
,这就是
grep-c
的目的
:)
@Vishwaroopa,您可以将
*
中的
*
替换为特定文件,或使用
log1*
匹配以
log1
开头的任何文件感谢您的回答谢谢您的回答