从日志文件中删除行并更新现有文件而不使用行

时间:2017-09-13 16:17:16

标签: shell

对于某些开发工作,我需要从存储在文件夹中的一系列日志文件中删除一些“噪音”。 (我在Linux上有这个,但也可以在Windows中执行此操作。)我想要删除的行如下所示:

Sep 5/2017 23:59:50:324 [MISC   ]: ValueType:ST / SetId: / ObID:0002-d007^RhySta^MDIL / ObSubID:0 / Detail:Sinus Rhythm / Units: / AccessChecks: / ObxTimeStamp:

任何时候我看到[MISC ]:我想删除整条线并且不留任何东西。一旦从文件中删除行,我想移动以使用现有名称保存文件,然后移动到文件夹中的下一个文件。

我不是脚本编写者......因此请求帮助。

1 个答案:

答案 0 :(得分:0)

以下是使用for, find, sed and mv.执行此操作的方法。

示例目录:

[zee]$ find . 
./test2/file1.tx
./test2

一衬垫:

 [zee]$ for file in $(find test1/ -type f) ; do  echo "checking if file $file has a match" ; grep -q "MIS" $x ; if [ $? -eq 0 ]; then  echo "$file has a match" ;  sed -i '/MIS/d' $file && echo "deleted matches...moving $file"  && mv $file test2/ ;  fi ; done 

运行上述单行的输出:

checking if file test1/file1.tx has a match
test1/file1.tx has a match
deleted matches...moving test1/file1.tx

以下是它的作用:查找目录中的所有文件" test1",检查给定文件是否匹配。如果文件匹配,则删除匹配并将文件移动到目录" test2"。