首页 > 解决方案 > 我有一个包含日志文件的目录,我想匹配一个模式来删除它并将内容再次写入相同的文件

问题描述

ls -ltr /var/log/script1/
total 5964
-rw-r--r--. 1 root root  22720 Apr 28 11:14 controller.log
-rw-r--r--. 1 root root    869 Apr 28 11:14 controller.log.2018-03-26-14
-rw-r--r--. 1 root root    893 Apr 28 11:14 controller.log.2018-03-19-13
-rw-r--r--. 1 root root  22409 Apr 28 11:14 controller.log.2018-03-19-12
-rw-r--r--. 1 root root  36918 Apr 28 11:14 controller.log.2018-04-02-05
-rw-r--r--. 1 root root  62605 Apr 28 11:14 controller.log.2018-04-02-04

以上文件包含多个“at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)”消息我想删除它并将其余消息写入同一个文件

我正在使用以下命令打印输出:

for f in /var/log/script1/* ; do sed '/^\s*at/d' $f  ; done

我在下面试过但没有运气:

对于 /var/log/script1/* 中的 f ;做 sed '/^\s*at/d' $f > $f ; 完毕

上面的命令返回空文件。有人可以帮忙吗!

标签: bashshellawksed

解决方案


推荐阅读