gpt4 book ai didi

linux - 如何同时 grep 多行(另一个命令的输出)?

转载 作者:太空狗 更新时间:2023-10-29 11:27:42 28 4
gpt4 key购买 nike

我有一个在后台运行的 Linux 驱动程序,它能够返回当前系统数据/统计信息。我通过在控制台中运行控制台实用程序(我们称它为 dump-data)来查看数据。每次我运行dump-data 时,所有 数据都会被转储。该实用程序的输出如下所示

Output:
- A=reading1
- B=reading2
- C=reading3
- D=reading4
- E=reading5
...
- variableX=readingX
...

实用程序返回的读数列表可能非常长。根据情况,某些读数会有用,而其他所有读数都无用。

我需要一种方法来仅 grep 有用的读物​​,这些读物的名称可能没有任何共同点(通过 bash 脚本)。 IE。有时我需要收集 A、D、E;有时我需要 C、D、E。

我试图绘制随时间变化的读数图表以寻找趋势,所以我不能运行这样的东西:

# forgive my pseudocode
Loop
dump-data | grep A
dump-data | grep D
dump-data | grep E
End Loop

收集 A、D、E,因为这实际上会给我 3 个独立的转储数据调用的读数,因为那是不准确的。

最佳答案

如果你想将grep的所有结果保存在同一个文件中,你可以将所有的表达式合并为一个:

grep -E 'expr1|expr2|expr3'

但是如果你想在单独的文件中得到结果(对于 expr1、expr2 和 expr3),事情就会变得更有趣。

您可以使用 tee >(命令) 执行此操作。

例如,这里我用三个不同的命令处理同一个管道:

$ echo abc | tee >(sed s/a/_a_/ > file1) | tee >(sed s/b/_b_/ > file2) | sed s/c/_c_/ > file3
$ grep "" file[123]
file1:_a_bc
file2:a_b_c
file3:ab_c_

但是命令好像太复杂了。

我最好将 dump-data 结果保存到一个文件中,然后 grep 它。

TEMP=$(mktemp /tmp/dump-data-XXXXXXXX)
dump-data > ${TEMP}
grep A ${TEMP}
grep B ${TEMP}
grep C ${TEMP}

关于linux - 如何同时 grep 多行(另一个命令的输出)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11773888/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com