指定查询时间点,定位日志位置

通过日志排查请求超时的问题,后端请求通过nginx转发到服务平台,服务平台向外部合作指定接口请求特定数据,发下服务平台日志可以正常请求到外部数据,但是服务平台返回给后端的却是504error ,后端通过mq消费消息的方式连接的服务平台

第一步 用Notepad++打开.log文件

第二步 选择视图-自动换行

第三步 输入 CTRL+F

 第四步 :输入正则表达式查找  条件是时间 和某个多个特定字段

//如果是17:25到17:29,正则表达式就是

17:2[5-9]

//查找查找包含特定文本的行   如 在某一有时间的行包含特定文本数据处理完成

.*数据处理完成

 

第五步:可以使用标记功能让查找到的行高亮显示

第六步:其他范围查找命令补充

1.linux 命令行工具打印指定时间范围内文本到控制台或指定文件

   sed  常见参数

  • -n:只打印 sed 处理后的结果,而不打印原文件内容。
  • -i:直接修改文件("in-place" 编辑),将编辑结果保存到源文件中。
  • -e:允许在同一命令中使用多个编辑命令。
#sed 是一种流编辑器(stream editor),它是 UNIX/Linux 中常用的命令行工具,用来对文本进行非交互##式编辑。与一般的文本编辑器不同,sed 主要用于通过命令流来编辑文件或文本,编辑结果通常不会直接改##变源文件,而是通过标准输出或将修改结果重定向到其他文件。

#流(stream)指的是输入文本被一行一行地处理,这些文本数据流入 sed,被处理后再流出。

#sed -n:表示使用 sed 流编辑器,-n 参数告诉 sed 只打印匹配到的内容,而不是默认的逐行输出。

#sed -n '/2024-09-16 12:14:*/,/2024-09-16 12:16:*/p' all.log:从 all.log 文件中提取指定时间段#的日志。
#  >/home/problem.log:将 sed 命令的输出重定向到 /home/problem.log 文件中,而不是控制台

sed -n '/2024-09-16 12:14:*/,/2024-09-16 12:16:*/p' all.log >/home/problem.log

#打印行:p 命令会打印匹配到的行,不指定的话直接输出到控制台

sed -n '/pattern/p' file.txt

#指定行范围进行操作:通过行号或者模式来限制操作的范围。
# 删除第 2 到第 4 行
sed '2,4d' file.txt 
 # 删除从 pattern1 到 pattern2 的行
sed '/pattern1/,/pattern2/d' file.txt 

#插入/追加文本:i 和 a 命令用于插入和追加文本。
sed '2i\This is inserted text' file.txt  # 在第 2 行前插入文本
sed '2a\This is appended text' file.txt  # 在第 2 行后追加文本

关于在bash中给命令加单引号而不加双引号或者不加引号

 sed 命令中,使用 单引号 (') 括住命令的原因是为了确保 shell(如 bash)不会在解释命令时对其中的特殊字符进行提前处理或转义,而是将它们完整地传递给 sed

1.1为什么传递给命令行工具sed的 字符串用单引号?
  1. 避免特殊字符的提前处理:在 sed 命令中,常常会包含特殊字符,例如 /, *, $, 等等。这些字符在 shell 中有特殊含义,可能会被提前解释或替换。使用单引号可以防止这些字符被 shell 提前处理,确保它们直接传递给 sed 来处理。

  2. 保持命令完整性:当使用单引号时,bash 不会对字符串中的任何字符进行解析,包括变量、转义符等。它会将整个字符串(即 /2024-09-16 12:14:*/,/2024-09-16 12:16:*/p)原样传递给 sed

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值