我正在尝试解析一个日志文件,我想在其中获取第一列和遵循某种模式的文本。
日志文件看起来像这样,
2018-04-25 00:00:10,139 INFO [HiveServer2-HttpHandler-Pool: Thread-2678420]: parse.ParseDriver (ParseDriver.java:parse(185)) - Parsing command: show databases
我想要包含时间戳(第一列和第二列)以及后面跟着关键字的所有命令的最终输出command:
。
有没有一种干净的方法来得到这个?目前,我的计划是使用awk
来获取第 1 列和第 2 列。使用sed
来获取命令,然后将两个输出合并到一个新文件中。
答案1
您还可以使用以下方法进行操作cut
:
cut -d' ' -f1,2,12- ${YOUR_LOG_FILE}
或者(更安全):
cat ${YOUR_LOG_FILE} | tr -s " " | cut -d' ' -f1,2,11-
答案2
这应该做
awk -F'(,|command:)' '{print $1, $NF}' infile
2018-04-25 00:00:10 show databases
在这里,我们定义了字段分隔符逗号,
或字符串command:
,然后打印第一个和最后一个字段。