我想以下面的格式写下grep日期和时间,并将其分配给删除空格和冒号的变量。请为此建议正则表达式。
07 Aug 2015 00:09:14
问题是我想在包含" CURRENT_RUN_ID"的特定行中grep这种格式。例如:该行将是这样的:
07 Aug 2015 00:09:14 -- INFO -- *** CURRENT_RUN_ID=600
我只需要从包含" CURRENT_RUN_ID"的特定行中获取日期和时间。
答案 0 :(得分:4)
我不会使用正则表达式。相反,我会在--
分隔符上拆分消息。这通过将解析整行与解析日期分开来简化问题。
# 07 Aug 2015 00:09:14 -- INFO -- *** CURRENT_RUN_ID=600
my($date_string, $flag, $message) = split /\s*--\s*/, $line, 3;
然后我使用Time::Piece->strptime将日期转换为Time :: Piece对象。这需要格式参数,如strftime。
my $date = Time::Piece->strptime($date_string, '%d %b %Y %H:%M:%S');
然后你可以使用$date
作为一个方便的Time :: Piece对象。
答案 1 :(得分:1)
#!/usr/bin/perl
use strict;
use warnings;
while (<>)
{
if (m/^(\d\d) (\w{3}) (\d{4}) (\d\d):(\d\d):(\d\d) .*CURRENT_RUN_ID/)
{
my $var = "$1$2$3$4$5$6";
print "$var\n";
}
}
查找2位数字,3个字母,4位数字以及一系列以空白和冒号作为分隔符的数字对,然后是CURRENT_RUN_ID
。如果匹配,则组装不带空格或冒号的字符串,并分配给变量。打印。
答案 2 :(得分:1)
这里的第一个正则表达式来获得匹配的行。第二个正则表达式删除空间&amp; &#39;:&#39;从约会时间开始。
div, flexBox_flex_minicalendar_
div, flexBox_flex_calendar_mainCal
div, flexDatePicker_Calendar_mainCal_begindate
div, flexDatePicker_Calendar_mainCal_enddate