我有以下数据文件,其中的值累计到某个点(直到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/