如何使用sed移除日志行中的逗号及后续3个字符?
如何使用sed移除日志行中的逗号及后续3个字符?
当然可以啊!既然你已经确认整个日志文件里只有时间戳这一处会出现逗号,那用sed处理起来超简单,完全能满足你的需求~
首先给你最精准的命令,专门针对日志里的毫秒格式:
sed 's/,[0-9]\{3\}//' your_fail2ban_log.log
命令拆解:
s/.../.../:这是sed的核心替换语法,结构就是「s/要找的内容/替换成什么/」,[0-9]\{3\}:精准匹配逗号加上连续3个数字,刚好对应日志里的,899这类毫秒部分- 后面留空:意思是把匹配到的这部分直接删掉,不替换成任何内容
如果你觉得上面的写法有点繁琐(毕竟你说这是唯一的逗号),也可以用更简洁的版本,匹配逗号加任意三个字符:
sed 's/,...//' your_fail2ban_log.log
这里的.在正则里代表任意单个字符,三个.就刚好对应逗号后的三位内容。
实际效果对比:
原日志行:
2023-02-09 11:01:26,899 fail2ban.filter [6823]: INFO [sshd] Found xxx.xxx.xxx.xxx - 2023-02-09 11:01:26
处理后会变成:
2023-02-09 11:01:26 fail2ban.filter [6823]: INFO [sshd] Found xxx.xxx.xxx.xxx - 2023-02-09 11:01:26
直接修改原文件(谨慎操作):
如果你不想只是输出处理后的内容,而是要直接修改日志文件本身,可以加上-i参数(原地编辑):
- Linux系统下直接用:
sed -i 's/,[0-9]\{3\}//' your_fail2ban_log.log
- macOS系统(用的是BSD版本sed),需要给
-i加一个空后缀(表示不生成备份文件):
sed -i '' 's/,[0-9]\{3\}//' your_fail2ban_log.log
备注:内容来源于stack exchange,提问作者unknown
相关产品推荐
相关产品推荐

