Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何从文件中以特定单词开头的bash输出中保存文本?_Linux_Bash_Text Processing - Fatal编程技术网

Linux 如何从文件中以特定单词开头的bash输出中保存文本?

Linux 如何从文件中以特定单词开头的bash输出中保存文本?,linux,bash,text-processing,Linux,Bash,Text Processing,我正在用BeagleBone黑色的debianlinux。我正在使用的程序在屏幕上打印很多信息。到目前为止,我一直将整个输出保存在一个文本文件中,这显然占用了有限存储空间的很大一部分。例如,我在做这样的事情: ./exampleProgram > Output.txt 正如我所说,这个文件包含了很多信息,我现在并不需要这些信息。我只关心以Schedule request开头的行。我正在寻找一种方法,只将这些行保存到输出文件中,而忽略其余部分。我试着跟着,但没用 ./exampleProg

我正在用BeagleBone黑色的debianlinux。我正在使用的程序在屏幕上打印很多信息。到目前为止,我一直将整个输出保存在一个文本文件中,这显然占用了有限存储空间的很大一部分。例如,我在做这样的事情:

./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进行缓冲。