我得到了这样的输出:
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/
答案 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脚本编写的东西编写),它接受两个文件并将第二行中的每一行附加到第一行的匹配行。然后,将每个新列保存到临时文件,并在每次保存新列时,在给定一些基本文件(启动为空)和新临时文件的情况下运行该附加程序。将它们全部折叠起来,然后查看最终文件。