-1

我正在尝试解析 apache 日志文件。基本上,我想在日志文件中查找 11:00,然后输出当时发生的每一行的最后六位数字。

我不知所措。有人可以帮忙吗?

4

1 回答 1

1

这样的事情可以做到:

awk '/11:00/ {print substr($0,length($0) - 6)}' file

解释

  • /11:00/ {}匹配包含11:00的行并执行{}.
  • print substr($0,length($0) - 6)打印这些行的最后 6 个字符:从“字符串长度 - 6”开始,因为它打印从那一点到结束的所有内容。

测试

$ cat a
hello bye bye
11:00 hello bye bye basd
11:23 hello this is
another line
11:00 with some text
$ awk '/11:00/ {print substr($0,length($0) - 6)}' a
ye basd
me text

更新

根据您的评论:

嘿,我刚刚检查过,它有效!除了,我的错误..这是我在日志中需要的最后一个字段,它的长度实际上是不同的,所以我猜我需要某种方式在最后一个空格之后“剪切”所有内容!——</p>

让我们尝试以下方法:

awk '/11:00/ {print $NF}' file

解释

  • /11:00/ {}匹配包含11:00的行并执行{}.
  • print $NF打印最后一个字段。

测试

$ cat a
hello bye bye
11:00 hello bye bye basd
11:23 hello this is
another line
11:00 with some text
$ awk '/11:00/ {print $NF}' a
basd
text
于 2013-10-01T12:24:06.870 回答