我正在寻找创建一个cronjob,如果某个目录通过扫描一个日志文件发送了一定数量的电子邮件,它将向我们发出警报。我用的一句话是:

awk '$3 ~ /^cwd/{print $3}' /var/log/exim_mainlog | sort | uniq -c | sed "s|^ *||g" | sort -nr | head --lines 5

在进一步了解之前,我需要从输出中排除一些位置,例如:
50992 cwd=/var/spool/exim
21960 cwd=/home/USER1/public_html/wp-content/cache/object/000000/746
2717 cwd=/etc/csf
2063 cwd=/home/USER2
1072 cwd=/

我需要排除:
1072 cwd=/
2717 cwd=/etc/csf
50992 cwd=/var/spool/exim

我需要将输出附加到一个txt文件,然后使用SED还是有一个更简单的方法?

最佳答案

通过管道grep -v排除匹配项:

egrep -v ' cwd=(/$|/etc/csf|/var/spool/exim)'

关于linux - Bash从与特定文本匹配的行输出中排除一行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27830091/

10-13 03:20