我在Linux中有一个日志文件,其中包含此类信息:
20200910:16:59:38 gpbackup:gpadmin:mdw:024273-[INFO]:-Starting backup of database mydb
20200910:16:59:38 gpbackup:gpadmin:mdw:024273-[INFO]:-Backup Timestamp = 20200910165938
我需要获取时间戳记值(20200910165938)。在“时间戳记”,“等于”和“空格”一词之后,我只需要任何东西。在日志文件中,此行只有一次。
我该如何实现?
答案 0 :(得分:2)
使用awk
。打印行的最后一个字段(NF
),其中Timestamp
是末尾的第三个字段(NF-2
)。
awk '$(NF-2)=="Timestamp" {print $NF}' file
答案 1 :(得分:1)
perl -lne 'print for /Timestamp\s+=\s+(\d+)/;' logfile
Perl单行代码使用以下命令行标志:
-e
:告诉Perl在代码中而不是在文件中查找代码。
-n
:一次遍历输入一行,默认情况下将其分配给$_
。
-l
:在直接执行代码之前,先剥离输入行分隔符(默认为* NIX上的{"\n"
),并在打印时附加它。
正则表达式的工作方式如下:
\s+
:1个或多个空格。
\d+
:1个或多个数字。
(\d+)
:捕获1个或更多数字。如果正则表达式匹配,则此“捕获组”(此处为时间戳)由正则表达式作为列表返回,然后打印。如果正则表达式不匹配,则返回一个空列表,并且不打印任何内容。
另请参见:
perldoc perlrun
: how to execute the Perl interpreter: command line switches
perldoc perlre
: Perl regular expressions (regexes)
perldoc perlre
: Perl regular expressions (regexes): Quantifiers; Character Classes and other Special Escapes; Assertions; Capture groups
答案 2 :(得分:1)
首先,让我们创建一个测试数据文件。
pd.to_numeric(citydata.tcad_id.replace([np.inf, -np.inf], np.nan).dropna(),
downcast='integer', errors='coerce')
现在使用一些通用的Unix工具提取时间戳。
cat <<EOF > data.txt
20200910:16:59:38 gpbackup:gpadmin:mdw:024273-[INFO]:-Starting backup of database mydb
20200910:16:59:38 gpbackup:gpadmin:mdw:024273-[INFO]:-Backup Timestamp = 20200910165938