linux删除包含关键字的行

木屋管理员
木屋管理员
发布于 2024-03-13 / 77 阅读
0
0

linux删除包含关键字的行

现状

因为没有对日志文件进行分割处理,导致nginx日志都记录在一个文件里,单文件过大,想要删除文件里指定日期前的所有记录。

  1. 容器化部署nginx

  2. centos操作系统

  3. 日志文件22G

  4. 需要删除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的行


评论