linux sed 利用脚本处理文本文件

Linux sed 命令是利用脚本来处理文本文件。

sed 可依照脚本的指令来处理、编辑文本文件。

经典应用场景:

nginx 有 11 g 的日志文件,我们现在需要拉取某个时间段的日志,怎么做呢?

蠢一点的办法,下载这 11G 的文件,然后用 txt 打开(可能会打不开!)

高效优雅的解决方案:

sed -n  '/26\/Feb\/2020:08:50:00/,/2020-03-01 09:30:00/'p  access.log > zliang.log

命令解析:

先看下我们的原始nginx日志

127.0.0.1 - - [26/Feb/2020:08:49:00 +0800] "GET /h5/index.html HTTP/1.1" 200 1812 "-" "WeChat/7.0.11.33"
127.0.0.1 - - [26/Feb/2020:08:50:00 +0800] "GET /h5/index.html HTTP/1.1" 200 1812 "-" "WeChat/7.0.11.33"
127.0.0.1 - - [26/Feb/2020:08:51:00 +0800] "GET /h5/index.html HTTP/1.1" 200 1812 "-" "WeChat/7.0.11.33"
127.0.0.1 - - [26/Feb/2020:08:52:00 +0800] "GET /h5/index.html HTTP/1.1" 200 1812 "-" "WeChat/7.0.11.33"
127.0.0.1 - - [26/Feb/2020:08:53:00 +0800] "GET /h5/index.html HTTP/1.1" 200 1812 "-" "WeChat/7.0.11.33"
127.0.0.1 - - [26/Feb/2020:08:54:00 +0800] "GET /h5/index.html HTTP/1.1" 200 1812 "-" "WeChat/7.0.11.33"
127.0.0.1 - - [26/Feb/2020:09:54:00 +0800] "GET /h5/index.html HTTP/1.1" 200 1812 "-" "WeChat/7.0.11.33"

sed -n ‘/26/Feb/2020:08:50:00/,/2020-03-01 09:30:00/‘p access.log > m.log

  • -n 或 –quiet 或 –silent 仅显示 script 处理后的结果。
  • p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
  • access.log 是原文件
  • > 是 linux 的输出命令,和 sed 无关
  • m.log 是提取后的文件

说人话,意思是:

匹配 access.log 的每一行,把 2020-02-26 08:502020-02-26 09:30:00 之间的日志写入 m.log 文件中


转载请注明来源。 欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。 可以在下面评论区评论,也可以邮件至 sharlot2050@foxmail.com。

文章标题:linux sed 利用脚本处理文本文件

字数:486

本文作者:夏来风

发布时间:2020-02-27, 23:03:22

原始链接:http://www.demo1024.com/blog/linux-sed/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。