Arrays 有没有一种简单的方法可以使用小脚本自动读取文本文件并使用bash脚本和awk或其他unix命令进行打印?

Arrays 有没有一种简单的方法可以使用小脚本自动读取文本文件并使用bash脚本和awk或其他unix命令进行打印?,arrays,bash,awk,sed,Arrays,Bash,Awk,Sed,我不熟悉使用awk和操纵文本文件。我有超过600000行的模型输出文件。我想在bash脚本中使用此文件自动打印x,y点。我用“t”表示时间,“t”表示温度,它们分别是x和y。每行或每行有不同数量的t-t点 每行由以下几行组成,用逗号分隔: -对数似然,-后,#Npairs-1,t1,t1,t2,t2 是否有一种方法可以使用脚本在“链”处开始读取文件,并一直读取到文件中的“链结束”?每行中的每个t,t对需要单独绘制为x,y对,因此所有t1,t2,t3,t4,t5等都是x值,t1,t2,t3,t4,

我不熟悉使用awk和操纵文本文件。我有超过600000行的模型输出文件。我想在bash脚本中使用此文件自动打印x,y点。我用“t”表示时间,“t”表示温度,它们分别是x和y。每行或每行有不同数量的t-t点

每行由以下几行组成,用逗号分隔:

-对数似然,-后,#Npairs-1,t1,t1,t2,t2

是否有一种方法可以使用脚本在“链”处开始读取文件,并一直读取到文件中的“链结束”?每行中的每个t,t对需要单独绘制为x,y对,因此所有t1,t2,t3,t4,t5等都是x值,t1,t2,t3,t4,t5等都是y值

例如,如果一行或单行如下所示: -400,-430,3500,50350,100200,20,0,5

----然后,500、350、100、200和0都是X(时间)点,其余是Y(温度)点(即50、100、20、5)。因此,500、350是第一对x、y对,以此类推

好处:我想保持每行和相关点集的对数似然值为-400,然后从0-1标准化整个600000 t-t“路径”组,以便使用颜色渐变进行打印

实际数据文件****


更新:我原本认为转换到列是可行的,但这可能是困难和低效的,因为不仅行会被转换到列,而且每一行读入的时间-温度点对都需要被分成两列,并并排放置才能正确读入部分答案,也许它会为最终的解决方案提供一些提示

只需进行简单的更改即可创建列格式

$ awk 'NR>=45&& NR<=600044 {for(i=5;i<=19;i+=2) print $i,$(i+1)}' input.txt > output.txt

$awk'NR>=45&&NR
-469.781525
来自哪里?如果您的示例输入和输出没有小数,并且一行上的字段可能更少,那么阅读起来就更容易了,-469是一个对数似然值,它是从更大的模型输出文件输出的(以及所有其他值)。我认为提供实际值会更有用?我试图理解需求。示例输入行的一部分是
3 475.105835 48.555820 135.366699 23.822214 58.519234 83.969536
,您想要什么?你写的3是对的数目减去1,所以看起来你需要这行中的2对:
475.105835 48.555820 135.366699 23.822214
。我明白了吗?好的,让我看看你想从这一行得到什么输出。不,完全不同。简单点!例如
500001 foo1 foo2 3 12:00 40 12:15 48 12:30 45 foo3 foo4 foo5
。显示相互关联的输入线和输出线。现在我不知道该如何看待
475.105835
。这是一对t.t,由一个点分隔,还是一个时间域,还是相似值?或者,您可以显示一些实际数据(2行),并用输入和输出进行解释,如
logL、t1、t1、t2、T3
,并解释为什么没有t2和T3。