Linux sed命令配合goAccess使用

来源:互联网 发布:高仿mcm淘宝店推荐 编辑:程序博客网 时间:2024/05/16 08:14

主要对日志文件按日志进行分析处理

一、查看某一天(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.log111111122222book good444book6[root@iZuf sed]# sed 's/book/books/' test.log 111111122222books good444books6

将test.log中的6替换成books
-n选项和p命令一起使用表示只打印那些发生替换的行:

[root@iZuf sed]# sed -n 's/book/BOOK/p' test.logBOOK goodBOOK

全面替换标记g

使用后缀 /g 标记会替换每一行中的所有匹配:

[root@iZuf sed]# sed 's/book/BOOK/g' test.log111111122222BOOK good444BOOK6

当需要从第N处匹配开始替换时,可以使用 /Ng:

[root@iZuf sed]# sed 's/ok/OK/2g' test.log 111111122222Books goodookoOKoOKoOKoOKoOKoOKoOKoOKoOKBooks BoOKs BoOKs

定界符

以上命令中字符 / 在sed中作为定界符使用,也可以使用任意的定界符:

[root@iZuf sed]# sed 's:22222:6:g' test.log 11111116Books goodookookookookookookookookookookBooks Books Books6[root@iZuf sed]# sed 's|22222|6|g' test.log 11111116Books goodookookookookookookookookookookBooks Books Books6

删除操作: d命令

#删除空白行[root@iZuf sed]# sed '/^$/d' test.log 111111122222Books goodookookookookookookookookookookBooks Books Books6#删除文件的第3行[root@iZuf sed]# sed '3d' test.log 111111122222ookookookookookookookookookookBooks Books Books6#删除文件的第3行至末尾所有行[root@iZuf sed]# sed '3,$d' test.log 111111122222#删除文件中所有开头为Book的行[root@iZuf sed]# cat test.log 111111122222Books goodookookookookookookookookookookBooks Books Books6[root@iZuf sed]# sed '/^Book/'d test.log 111111122222ookookookookookookookookookook

已匹配字符串标记&

正则表达式 \w+ 匹配每一个单词,使用 [&] 替换它,& 对应于之前所匹配到的单词
所有以22222开头的行都会被替换成它自已加localhost:

[root@iZuf sed]# sed 's/^22222/&localhost/' test.log 111111122222localhostBooks goodookookookookookookookookookookBooks Books Books6

详细实例地址:http://man.linuxde.net/sed

原创粉丝点击