我正在使用大量日志文件,并且大多数日志文件都有许多重复的字符串,这些字符串被多次记录。 为了让那些与这些事情没有多大关系的人(对我自己也很容易)可以轻松查看日志,我想制作一个脚本,可以删除一些可能导致其他人“误报”的文本行。 (“嘿管理员,我这里有多次这些错误”;>“叹气,这些错误并不意味着什么”的方式)
是否有一些使用grep,cat或awk的bash代码可以摆脱许多不同的文本行,而不必为要删除的每一行反复浏览文档? (基本上一举删除所有垃圾线)
例如,我将在粗体:
中标记要删除的行有一件事我不知道为什么
您尝试的努力程度并不重要
记住这一点,我设计了这个 韵
及时解释
我所知道的全部
时间是有价值的事情
当钟摆摆动时,看着它飞过
注意它倒数到最后 天
时钟会延长生命
这太不真实了
没看下面
留意窗外的时间
试图坚持,但甚至不知道
浪费一切只是为了
注意你去
对于林肯公园歌词感到抱歉,在试图解决问题的过程中收听广播有时会给出一些不好的例子:P
所有这些线都可以在一个命令中移除吗? 非常感谢,如果有人知道如何。
答案 0 :(得分:2)
grep -v "<string1>\|<string2>\|<stringN>" /path/to/file
答案 1 :(得分:1)
删除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
答案 2 :(得分:1)
将您不想要的行放在文件中,然后
grep -v -f not.wanted filename > smaller.file