linux - Bash 从匹配特定文本的行的输出中排除一行

标签 linux bash awk

我想创建一个 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/

相关文章:

linux - 需要搜索模式并打印其下一个值

linux - 如何让多线程应用程序在 VMWare 下使用 Ubuntu 上的所有内核?

c - Linux/Unix : Non-ascii characters in home directory?

bash - 在批处理文件中将反斜杠转换为转发

awk - 在 awk 中编写脚本

c - C : using awk getting runaway string constant error 中的 shell 脚本

c - 使用 gcc 编译一个显示 "undefined reference to ` 中止的项目'”

linux - 在 Jetty/Linux 上使用非默认 HTTPS 端口而不将其写入 URL

java - 从 shell 分析 .java 文件

linux - bash颜色: OS X vs Linux