如何在Unix中的grep命令中使用Runtime变量

时间:2016-05-30 05:49:22

标签: unix

我有一个Time.sh文件,其中包含用于存储运行时用户输入的StartTime和EndTime的代码。 Time.sh fie中的代码是

href

以下是我在运行时获取StartTime和EndTime的代码。

read -p "Enter Start Time : " StartTime
read -p "Enter End Time : " EndTime
echo "Start and End Time are:" $StartTime, $EndTime

现在我必须在两个变量中使用这个值,并在“Test.log”文件中打印数据。 Test.log文件中的数据如下,

$ chmod +x Time.sh
$ ./Time.sh

我使用了以下代码,

May 10 01:07:05 server1 user:err|error IIB[78658909]: error text
May 10 01:07:06 server1 user:notice superstp[78653958]: infotext notice text
May 10 01:07:07 server1 user:info syslog: infotext
May 10 01:07:08 server1 user:err|error IIB[78658909]: error text
May 10 01:07:09 server1 user:warn|warning IBM Java[78650709]: warning text
May 10 01:07:10 server1 user:info syslog: infotext
May 10 01:07:11 server1 user:err|error IIB[78658909]: error text
May 10 01:07:12 server1 user:warn|warning IBM Java[78650709]: warning text
May 10 01:07:13 server1 user:notice superstp[78653958]: infotext notice text
May 10 01:07:14 server1 user:info syslog: infotext
May 10 01:07:15 server1 user:warn|warning IBM Java[78650709]: warning text

但它不起作用。任何人都可以帮助使用这两个变量并获取StartTime和EndTime中的数据。在此先感谢。

1 个答案:

答案 0 :(得分:0)

以下内容应该有所帮助:

BEGIN { Found = 0; EndFound = 0;}
{
    if($0 ~ Start)
    {
        Found = 1;
    }
    if($0 ~ End)
    {
        EndFound = 1;
    }
    else
    {
        if(EndFound == 1)
        {
            Found = 0;
        }
    }
    if(Found)
    {
        print $0;
    }
}

它应该以{{1​​}}运行,其中awk -v Start="01:07:06" -v End="01:07:10" -f program data_file包含上面的代码,program"01:07:06"分别包含开始和结束时间。

这只是一个例子。请根据您的具体要求改变它。