有选择地从文本文件输出列

有选择地从文本文件输出列

我正在尝试解析一个日志文件,我想在其中获取第一列和遵循某种模式的文本。

日志文件看起来像这样,

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:,然后打印第一个和最后一个字段。

相关内容