对于某些开发工作,我需要从存储在文件夹中的一系列日志文件中删除一些“噪音”。 (我在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 ]:
我想删除整条线并且不留任何东西。一旦从文件中删除行,我想移动以使用现有名称保存文件,然后移动到文件夹中的下一个文件。
我不是脚本编写者......因此请求帮助。
答案 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"。