如何使用Perl将一行数字切割成列

时间:2017-01-25 15:43:00

标签: perl m

我正在尝试将当前正在处理的数据转换为更简单的格式,但我不是程序员,所以我真的可以使用一些帮助。我们的制表符分隔.txt数据文件如下所示:

Date                :       
Time                :            
Sample name         :       
Temperature         :       
                    :  
-4000     4.882813E-03    4.882813E-03   
-3000     4.882813E-03    4.882813E-03   
-2000     0   0  
-1000    -.1367188    .1367188   
0    -3.554688    3.457031   
1000     -3.632813    3.491211   
2000     -3.657227    3.496094   
3000     -3.686523    3.491211   
4000     -3.710938    3.496094   
5000     -3.735352    3.496094   
6000     -3.754883    3.491211   
7000     -3.774414    3.496094   
8000     -3.793945    3.496094  

文本和所有数据,直到列A达到0并不重要,应该删除。一旦列A达到0,脚本应该开始扫描列C,一旦列C改变5%,它应该切割或复制列B的下一个100个数据点并将其放入列D中,在下一次更改时,与这些点匹配的数据应放在E列E列中,直到文件末尾到达。

更简单的数字:

0   1   2
1000    1   2
2000    1   2
3000    1   2
4000    1   2
5000    1   2
6000    1   2
7000    1   2
8000    0   3
9000    0   3
10000   0   3
11000   0   3
12000   0   3

应转换为:

0000    1   2   0
1000    1   2   0
2000    1   2   0
3000    1   2   0
4000    1   2   0
5000    1   2
6000    1   2
7000    1   2

我有点不知所措,因为我知道除了多年前的一些perl之外没有编程语言,有人可以给我一些提示如何做到这一点,因为现在我可以阅读我的文本文件并显示Padre的终端窗口中的数据,但我无法操纵数据

提前感谢您提供任何技巧和帮助,其他非编程解决方案也受到欢迎,因为现在我和我的同事正在考虑对这些变化进行手工操作

1 个答案:

答案 0 :(得分:1)

如何使用Perl

将一行数字切割成列

使用split运算符

my $row = '0    -3.554688    3.457031   ';
my @row = split ' ', $row;
say for @row;

输出

0
-3.554688
3.457031