我想将流的部分结果写入文件,但我希望将流的全部内容打印到控制台。是否有命令可以帮助实现这一点?
最小示例:
假设我有一个文件,foo.txt
其内容为:
bat
dude
rude
我想将该文件中包含字母“a”的所有行写入bar.txt
。我可以写
cat foo.txt | grep 'a' > bar.txt
这将导致bar.txt
包含bat
。但这不会给我想要的控制台输出。
相反,我更喜欢这样:
cat foo.txt | output-stdin-to-console-and-pass-to-stdout | grep 'a' > bar.txt
它不仅会写入bat
,bar.txt
还会将以下内容写入控制台:
bat
dude
rude
有什么命令我可以运行来做到这一点?
答案1
答案2
你可以简单地使用这个:
cat foo.txt && cat foo.txt | grep 'a' > bar.txt
否则,可以使用tee
从https://www.geeksforgeeks.org/tee-command-linux-example/
tee 命令读取标准输入并将其写入标准输出和一个或多个文件。该命令以管道工程中使用的 T 型分离器命名。它基本上会拆分程序的输出,以便既可以显示又可以保存在文件中。它同时执行这两项任务,将结果复制到指定的文件或变量中,并显示结果。