现状
因为没有对日志文件进行分割处理,导致nginx日志都记录在一个文件里,单文件过大,想要删除文件里指定日期前的所有记录。
容器化部署nginx
centos操作系统
日志文件22G
需要删除2023年3月之前的所有记录
用到的命令
# 查询包含指定关键字的行,并打印行号
grep -n
# -i 直接修改原文件
sed -i
思路1:
先用grep -n 查出包含指定关键字的开始行或者结束行号,再通过sed -i删除开始到指定行号的所有行。
# 查询包含关键字"hello"的文件中所有行并显示行号
grep -n "hello" file.txt
# 这将会在名为file.txt的文件中查找包含关键字"hello"的内容,并且每一行都会显示对应的行号。
sed -i 'M,Nd' filename
# 这里,M和N分别是开始和结束的行号。-i直接操作原文件
思路2:
如果关键字里没有包含特殊字符,可以直接用sed -i删除
删除文本中有关键字的行
sed -i '/^key/d' test //删除以关键字key开头的行
sed -i '/key/d' test //删除包含关键字key的行