输出最后六个字符串

时间:2013-10-01 12:16:13

标签: linux apache grep

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

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

1 个答案:

答案 0 :(得分: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

更新

根据您的评论:

  嘿,我刚检查过它的确有效!除了,我的错误..这是最后一次   我需要在日志中的字段,实际上长度不同,所以我是   猜测我需要一些方法在最后一次“切割”所有东西   空间! -

让我们试试以下内容:

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