【发布时间】:2020-03-16 21:04:20
【问题描述】:
我有一个长时间运行的过程,我想从大量输出中捕获一小部分数据。
我可以通过 grep 管道来做到这一点,但我无法看到它喷出所有其他信息。
我基本上希望 grep 将它找到的内容保存到一个变量中,并且不理会 stdout。我该怎么做?
【问题讨论】:
-
不可变,但您可以使用
tee将结果保存到文件并继续在终端上查看输出 -
怎么样:
command | tee >(grep whatever). -
@tshiono
echo foobar | tee >(\grep -o ob)看起来很接近。我可以把它变成一个变量吗? -
您打算在哪里“查看”变量的内容?一旦您有一个进程占用了“滚动”一些日志信息的终端窗口,那么您可以在哪里查看同一屏幕上的变量?请充实您的预期用例,以便我们进行头脑风暴。 (将内容保存到单独的文件中可以让您从单独的窗口/终端查看简化的集合,如果我理解您的 Q 的话,您无法仅通过分配变量来完成此操作;-?)祝您好运。跨度>
-
所以,从上面继续,
command | tee >(grep whatever > specialOut).... 然后你可以像var=$(< specialOut); echo "$var"一样分配。祝你好运。