文本文件有以下名为“log”的行
--- [n-event-group-3] action
--- [n-event-group-8] action.service
--- [n-event-group-2] essing.service.
--- [n-event-group-10] service.
--- [ost-stats-event] host.
--- 1077916, partition: 10,
--- [d | vm-cm-event] cm.service.
--- [d | vm-cm-eve] cm.service
error: not found
com.rom.nom
--- [-event-group-11] ervice
--- [-event-group-15] ervice
--- [-event-group-20] ervice
--- [-event-group-99] ervice
--- [-event-group-13] ervice
--- [-event-group-13] ervice
--- [-event-group-13] ervice
--- [-event-group-13] ervice
想要 grep 包含 [-event-group-13] 的行以及所有没有模式 [-event-group-(digits)] 的行
所以需要的结果是
--- [ost-stats-event] host.
--- 1077916, partition: 10,
--- [d | vm-cm-event] cm.service.
--- [d | vm-cm-eve] cm.service
error: not found
com.rom.nom
--- [-event-group-13] ervice
--- [-event-group-13] ervice
--- [-event-group-13] ervice
--- [-event-group-13] ervice
我尝试过
grep -vE '-event-group-[^13]' log
但返回带有 的行
[n-event-group-3]
[n-event-group-10]
[n-event-group-11]
[n-event-group-15]
还有。
awk
更适合您的需求:
$ awk '!/-event-group-/{print} /-event-group-13/{print}' file
--- [ost-stats-event] host.
--- 1077916, partition: 10,
--- [d | vm-cm-event] cm.service.
--- [d | vm-cm-eve] cm.service
error: not found
com.rom.nom
--- [-event-group-13] ervice
--- [-event-group-13] ervice
--- [-event-group-13] ervice
--- [-event-group-13] ervice