繁体   English   中英

bash-从文本文件中删除多行不同的文本

[英]bash - remove multiple different lines of text from a text file

我正在使用许多日志文件,大多数日志文件都有很多重复的字符串,这些字符串被多次记录。 为了使与其他事情无关的其他人(也对我自己)而言,日志易于查看,我想制作一个脚本,该脚本会删除一些文本行,这些文本行可能对其他人造成“虚假警报” 。 (“嗨,管理员,我在这里多次遇到这些错误”;>“抱歉,这些错误没有任何意义”)

是否有一些带有grep,cat或awk的bash代码可以消除很多不同的文本行,而不必一遍又一遍地删除每行要删除的文档? (基本上一举删除所有垃圾行)

例如,我将要删除的行用粗体标记:

一件事我不知道为什么

努力程度甚至都没有关系

请记住,我设计了这首韵律

适时解释

我所知道的

时间是一件宝贵的事情

看着它随着钟摆的摆动而飞过

看着它倒计时到一天结束

时钟敲打生活

太虚幻了

没看下面

看着时间窗外

试图坚持,但甚至不知道

浪费这一切只是为了

看你走

对不起Linkin Park歌词,在尝试解决问题的同时收听广播有时会给出一些错误的例子:P

所有这些行都可以在一个命令中删除吗? 如果有人知道,非常感谢。

grep -v "<string1>\|<string2>\|<stringN>" /path/to/file

它删除not_wanted数组中提供的行。

#!/bin/bash
    exec < example.txt
    not_wanted[0]="It doesn’t even matter how hard you try"
    not_wanted[1]="time is a valuable thing"
    not_wanted[2]="The clock ticks life away"
    not_wanted[3]="It’s so unreal"
    not_wanted[4]="Trying to hold on but didn’t even know"

    while read line; do
        for i in "${not_wanted[@]}"; do
            if [ "$line" == "$i" ]; then unset line; break; fi
        done 
        if [ "$line" ]; then echo "$line"; fi
    done

将不需要的行放入文件中,然后

grep -v -f not.wanted filename > smaller.file

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM