linux - SED 解析时间戳之间的 apache 日志

标签 linux shell awk sed

我正在尝试解析日志并获取时间戳之间的行。尝试了如下所示的 sed 方法,但面临正则表达式的问题

日志模式:

IP - - [20/Apr/2018:14:25:37 +0000] "GET / HTTP/1.1" 301 3936 "-" "
IP - - [20/Apr/2018:14:44:08 +0000]
----------------------------------

IP- - [20/Apr/2018:20:43:46 +0000]

我需要获取 4 月 20 日 14:2520:43 之间的行,因为日志还包含其他日期。

尝试过这个:

sed -n '/\[14:25/,/\[20:43/p' *-https_access.log.1

但不工作。

最佳答案

既然您提到您想要 4 月 20 日的日志,我建议如下:

$ sed -n '/20\/Apr\/2018:14:25/,/20\/Apr\/2018:20:43/p' *-https_access.log.1

如果“20:43”出现在其他地方,这与错误匹配发生冲突的可能性很小。

关于linux - SED 解析时间戳之间的 apache 日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50014023/

相关文章:

r - BDgraph R 包在不同操作系统上产生不同(但一致)的结果

java - 我无法在我的 cent os 机器上运行 jmeter

python - 替换 JSON 文件中的字符串

linux - Linux 中大型 TSV 的条件编辑

linux - awk 查找字符串并下划线打印

Java getInputStream SocketTimeoutException 而不是 NoRouteToHostException

linux - 通过命令提示符读取参数(以 "-"开头)

linux - 脚本中的多个单引号

linux - shell 语法错误

linux - 使用 bash 遍历文件(和目录)名称