bash:每隔n秒添加一列

时间:2016-09-22 14:17:12

标签: bash text-manipulation

我得到了这样的输出:

0.000
0.002
0.000
0.002
0.000
0.026
=====
0.026

注意,最后一行(0.026)是以前阶段的结束时间。 我将每n秒重复一次该命令,我希望下一个输出写入下一列,如:

0.000   0.000
0.002   0.001
0.000   0.000
0.002   0.001
0.000   0.000
0.026   0.027
=====   =====
0.026   0.028

我知道sed -i的某些内容可以解决我的问题,但我无法让它发挥作用。由于在此值上具有完全相同的时间戳非常重要,因此我无法执行命令,然后执行下一个命令,然后将结果写入其位置。

给我这些值的命令是:

curl -w '\nLookup time:\t%{time_namelookup}\nConnect time:\t%{time_connect}\nPreXfer time:\t%{time_pretransfer}\nStartXfer time:\t%{time_starttransfer}\n\nTotal time:\t%{time_total}\n' -o /dev/null -s http://linux.com/

2 个答案:

答案 0 :(得分:1)

使用paste -d '\t' prevfile.out <( curl -w '\nLookup time:\t%{time_namelookup}\nConnect time:\t%{time_connect}\nPreXfer time:\t%{time_pretransfer}\nStartXfer time:\t%{time_starttransfer}\n=====================\nTotal time:\t%{time_total}\n' -o /dev/null -s http://linux.com/ ) 和命令替换,您可以将新列并排添加到存储在任何文件中的上一个输出中:

Lookup time:    0.005   Lookup time:    1.528
Connect time:   0.387   Connect time:   1.788
PreXfer time:   0.387   PreXfer time:   1.788
StartXfer time: 0.797   StartXfer time: 2.059
=====================   =====================
Total time: 0.797   Total time: 2.059

这将生成此输出:

{{1}}

答案 1 :(得分:0)

Shell程序按行工作 - 你可以回到最近一行的开头并通过打印回车符(\r,例如echo -en "print this \roverwrite with this")在bash中重写它,但你可以& #39; t为最近一行之前的行做。

您无法直接对终端输出进行多行更新。

你最好的选择是编写一些辅助程序(可能更容易用bash脚本编写的东西编写),它接受两个文件并将第二行中的每一行附加到第一行的匹配行。然后,将每个新列保存到临时文件,并在每次保存新列时,在给定一些基本文件(启动为空)和新临时文件的情况下运行该附加程序。将它们全部折叠起来,然后查看最终文件。