如何摆脱linux shell中不同字符串的多行

时间:2018-04-11 07:44:07

标签: shell grep

在我的linux shell中,我想摆脱特定的行。

我使用grep -v之类的:

 ps -aux | grep -v root | grep -v gdm | grep -v sshd | grep -v zabbix | grep -v bash    | grep -v ssh | grep -v usr

所以我使用了太多的grep -v,这很难看。

我曾尝试过:

ps -axu | grep -v "root && gdm && sshd && zabbix && bash && ssh && usr"

但它失败了。我尝试过另一种方式:

ps -axu | grep -v root && gdm && sshd && zabbix && bash && ssh && usr;

不幸的是,它又失败了。

我认为sed或awk可以解决这个问题,但我不知道如何

谁能帮帮我?

2 个答案:

答案 0 :(得分:1)

我认为您正在尝试在需要转义的字符串中使用管道。您需要按以下方式执行此操作:

ps -axu | grep -v "root\|gdm\|sshd\|zabbix\|bash\|ssh\|usr"

答案 1 :(得分:0)

ps -axu | grep -Ev 'root|gdm|ssh|zabbix|bash|usr'

当然,这也会排除一个名为 groot usrmgr 的进程,但此问题也存在于原始解决方案中。

请注意,至少在更新版本的gnu grep中,不再需要-E开关,因为Gnu grep始终将regexp解释为扩展正则表达式。指定-E保证即使你有"传统"该命令也能正常工作。 (非Gnu)grep在你的道路上。