我有以下数据文件,其中的值累计到某个点(直到row1> row2):

ifile.txt
6
7
10
34
-999
-999
0
2
4
8
12
12
-999
-999
-999
-999
12
13
15

我想打印所有单独的值而不考虑 undefined 的值(即-999)。

我的愿望输出是:
ofile.txt
6
1
3
24
-999
-999
0
2
2
4
4
0
-999
-999
-999
-999
12
1
2

我正在尝试awk'{(if $1 != -999 && [$1] >= [$2]),printf "%s\n",$1-$2}' ifile.txt

最佳答案

这是另一个awk想法:

$ awk '($1==-999){p=0; print; next}{print $1-p;p=$1}' file

这个想法是使用变量p跟踪前一行的累积值。每次我们击到-999值时,我们都会将p重置为零。无需初始化p的值,因为awk假定所有未初始化的变量默认情况下都是一个空字符串且值为0。

关于shell - 累积使用awk的个人,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59609036/

10-13 09:40