Linux 如何从文件中以特定单词开头的bash输出中保存文本?
我正在用BeagleBone黑色的debianlinux。我正在使用的程序在屏幕上打印很多信息。到目前为止,我一直将整个输出保存在一个文本文件中,这显然占用了有限存储空间的很大一部分。例如,我在做这样的事情:Linux 如何从文件中以特定单词开头的bash输出中保存文本?,linux,bash,text-processing,Linux,Bash,Text Processing,我正在用BeagleBone黑色的debianlinux。我正在使用的程序在屏幕上打印很多信息。到目前为止,我一直将整个输出保存在一个文本文件中,这显然占用了有限存储空间的很大一部分。例如,我在做这样的事情: ./exampleProgram > Output.txt 正如我所说,这个文件包含了很多信息,我现在并不需要这些信息。我只关心以Schedule request开头的行。我正在寻找一种方法,只将这些行保存到输出文件中,而忽略其余部分。我试着跟着,但没用 ./exampleProg
./exampleProgram > Output.txt
正如我所说,这个文件包含了很多信息,我现在并不需要这些信息。我只关心以Schedule request开头的行。我正在寻找一种方法,只将这些行保存到输出文件中,而忽略其余部分。我试着跟着,但没用
./exampleProgram | grep "Schedule request" > Output.txt
我如何才能做到这一点?在现代GNU平台上:
stdbuf -oL ./exampleProgram \
| grep --line-buffered "Schedule request" \
> Output.txt
stdbuf-oL是一个GNU工具,它将stdout配置为在运行exampleProgram之前无缓冲。exampleProgram可以覆盖或忽略此设置,因此它的实现很重要。
grep-line buffered告诉GNU grep也不要缓冲大于一行的部分。
为什么不起作用?你得到了/没有得到你期望的东西吗?你能发布exampleProgram的摘录吗?因为该文件是空的,虽然存在以Schedule requestFelix开头的行,但tail-f | grep在我将其应用于文件时对我来说很好。现在,我不是在读取文件,而是从bash输出中读取,只想保存我感兴趣的行。请参阅。简短形式:缓冲发生了,所以只有当有足够大的块准备就绪时,数据才会被重写。谢谢!我还想到了这个选项,也是非缓冲选项。我没有意识到这种缓冲!unbuffer有一个相当重的依赖链——它是expect的一部分,它需要一个TCL解释器;这是一个足够大的软件,你不会想把它安装在Raspberry Pi或手机上,除非你打算把它用于其他用途。谢谢!这就是我一直在寻找的解决方案。是的,我也发现了这一点,而且出于某种原因,unbuffered也没有按预期工作。它不起作用的一个常见原因是将其应用到错误的管道段。例如,./exampleProgram | unbuffer grep Schedule request可能是您需要的,而不是unbuffer./exampleProgram | grep Schedule request,如果它只是grep而不是exampleProgram进行缓冲。