连续将终端输出写入文件?

连续将终端输出写入文件?

鉴于我有一个每 10 秒打印出 100-999 之间的随机数的脚本,我如何将该信息收集到例如 .txt 文件中?是不是也可以只收集中间的数字呢?示例:从“659”中收集“5”。

答案1

您可以保存脚本的终端输出:如果脚本每次都打印数字,如果将输出重定向到文件,则会保存该数字

script > file.txt

如果你想追加 .

script >> file.txt

file.txt然后仅显示y中心的 5 个结果

len=$(wc -l < file.txt);
#to store the length of file

len=$((($len/2)-3));  
#to get the middle of file

tail -n $len file.txt | head -n 5 ; 
#show 5 lines from midlle of file

答案2

为此有多个步骤。首先,您需要将 bash 输出记录在文本文件中。你可以用tee它。(手册页) 让我们将您的脚本称为“myscript”。

将您的输入传送到

tee /path/to/myscript.txt

这会将 bash 输入的输出写入/path/to/myscript.txt

所以它看起来像

sh /path/to/myscript.sh | tee /path/to/myscript.txt

您可以在 上执行标准文本处理/path/to/myscript.txt

不完全确定中间是什么意思,因为对于“中位数”,这完全取决于您的行数是偶数还是奇数。但是您可以使用 sed 打印您想要的任何行。

sed -n 'x,yp' /path/to/myscript.txt

其中xy是您要打印的行间隔的界限。

答案3

script | tee path/to/file.txt

script | cut -c 2

script | cut -c 2 | tee path/to/file.txt

相关内容