主要对日志文件按日志进行分析处理
一、查看某一天(2017-10-26)的请求日志
sed -n '/26\/Oct\/2017/p' test_com_access.log | goaccess -a > /mnt/logs/test_20171027.html
二、查看某一天只包含“mp3”的请求日志
1、将某一天的日志先保存到新的文件中
sed -n '/26\/Oct\/2017/p' test_com_access.log > test_access_20171026.log
2、对新文件进行分析处理
sed -n '/\.mp3/p' test_com_access_20171026.log | goaccess -a > /mnt/logs/test_mp3_20171027.html
三、查看某时间段的请求日志
sed -n '/16\/Oct\/2017/,/22\/Oct\/2017/p' test_com_access.log | goaccess -a > /mnt/logs/test_20171016-22.html
关于sed命令
sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
sed用法实例
替换操作: s命令
替换文本中的字符串:
[root@iZuf sed]# cat test.log
1111111
22222
book good
444
book
6
[root@iZuf sed]# sed 's/book/books/' test.log
1111111
22222
books good
444
books
6
将test.log中的6替换成books
-n选项和p命令一起使用表示只打印那些发生替换的行:
[root@iZuf sed]# sed -n 's/book/BOOK/p' test.log
BOOK good
BOOK
全面替换标记g
使用后缀 /g 标记会替换每一行中的所有匹配:
[root@iZuf sed]# sed 's/book/BOOK/g' test.log
1111111
22222
BOOK good
444
BOOK
6
当需要从第N处匹配开始替换时,可以使用 /Ng:
[root@iZuf sed]# sed 's/ok/OK/2g' test.log
1111111
22222
Books good
ookoOKoOKoOKoOKoOKoOKoOKoOKoOK
Books BoOKs BoOKs
定界符
以上命令中字符 / 在sed中作为定界符使用,也可以使用任意的定界符:
[root@iZuf sed]# sed 's:22222:6:g' test.log
1111111
6
Books good
ookookookookookookookookookook
Books Books Books
6
[root@iZuf sed]# sed 's|22222|6|g' test.log
1111111
6
Books good
ookookookookookookookookookook
Books Books Books
6
删除操作: d命令
#删除空白行
[root@iZuf sed]# sed '/^$/d' test.log
1111111
22222
Books good
ookookookookookookookookookook
Books Books Books
6
#删除文件的第3行
[root@iZuf sed]# sed '3d' test.log
1111111
22222
ookookookookookookookookookook
Books Books Books
6
#删除文件的第3行至末尾所有行
[root@iZuf sed]# sed '3,$d' test.log
1111111
22222
#删除文件中所有开头为Book的行
[root@iZuf sed]# cat test.log
1111111
22222
Books good
ookookookookookookookookookook
Books Books Books
6
[root@iZuf sed]# sed '/^Book/'d test.log
1111111
22222
ookookookookookookookookookook
已匹配字符串标记&
正则表达式 \w+ 匹配每一个单词,使用 [&] 替换它,& 对应于之前所匹配到的单词
所有以22222开头的行都会被替换成它自已加localhost:
[root@iZuf sed]# sed 's/^22222/&localhost/' test.log
1111111
22222localhost
Books good
ookookookookookookookookookook
Books Books Books
6
详细实例地址:http://man.linuxde.net/sed