在根据所选模式修改流本身时,遇到了一个关于使用 grep 过滤多个模式的棘手问题
如果我想过滤让我们说“ps -ef”输出的多种模式,我可以这样做
ps -ef |grep -E "client|postgres:"
postgres 142705 3845 0 12:04 ? 00:00:00 postgres: suiteadmin suiteadmin 127.0.0.1(34380) idle
postgres 142979 3845 3 12:04 ? 00:00:00 postgres: cost securetrack [local] idle
postgres 142989 3845 12 12:04 ? 00:00:00 postgres: cost securetrack [local] SELECT
root 142991 140798 0 12:04 pts/0 00:00:00 my.client -fce
但是,我无法在流处理的后面判断“客户端”或“postgres:”模式是否与特定流线匹配(这对我的用例至关重要)
如果我选择使用 -o 参数,grep 会从我请求的多个模式中为我提供实际匹配的模式,但它不会打印它在其中找到模式的整个流线(我也需要)
ps -ef |grep -Eo "client|postgres:"
postgres:
postgres:
postgres:
client
我希望 grep (或可能是另一个工具)给我“匹配模式”+“匹配模式的行”,这样我以后可以将它作为一个流处理,知道“为什么”它首先被选中。
不太确定我可以用 grep 做到这一点是否有其他工具可以用于此?(awk、sed 等...)
对我来说非常快速和高效地完成它很重要,所以我不想开始搞乱循环和对不同 linux 可执行工具的多次调用
希望使用一个工具将其作为流处理,该工具既可以通过多个选项进行过滤,也可以告诉我它选择了哪个模式