【问题标题】:How to print groups of lines from a log file, transposing them into single line如何从日志文件中打印多组行,将它们转换为单行
【发布时间】:2015-04-02 13:17:11
【问题描述】:

我正在尝试将我的服务器中的错误日志打印到一行中,其中包含有关失败的时间和重要细节。第一行包含日志的时间戳,新行上方的最后一行包含日志的原因。想将它们对齐成单行。任何帮助表示赞赏。 单行中的“需要时间戳、严重性、空行之前的最后一行”。

当前日志结构:

MAR31 10:30 critical
cable is faulty

MAR31 10:31 info
Card is recovered

MAR31 10:31 critical
Another card failed

MAR31 10:31 critical
missing inventory
cable missing

.....
.....
.....

.....
.....

......
......

所需的日志结构是:

MAR31 10:30 critical cable is faulty

MAR31 10:31 info Card is recovered

MAR31 10:31 critical Another card failed

MAR31 10:31 critical cable missing

【问题讨论】:

  • 最后一行怎么样?不是这样MAR31 10:31 critical missing inventory cable missing 吗?

标签: linux awk sed cut


【解决方案1】:

使用 awk:

awk -v RS= -F '\n' '{ print $1, $NF }' filename

一个空的记录分隔符在空行分隔记录,并且将字段分隔符设置为换行符,每个字段都是一行。 print $1, $NF 然后打印记录的第一行和最后一行。

【讨论】:

  • 有什么方法可以从输出中删除空行?
  • 让我删除代码中的"\n"(编辑:你去)。您应该从问题中删除空行以匹配它。 :P
猜你喜欢
  • 2013-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-07
  • 1970-01-01
相关资源
最近更新 更多