在我的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可以解决这个问题,但我不知道如何
谁能帮帮我?
答案 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在你的道路上。