【发布时间】:2020-06-10 13:41:23
【问题描述】:
我有一个这样的大文件:
$1 $2 $3 $4 $5
567 NA 0 0 NA
568 NA 0 0 NA
569 NA 0 0 NA
570 NA 0 0 NA
571 + 1 1 1
572 + 1 2 1
573 + 1 3 1
966 + 1 396 1
967 NA 0 396 NA
968 NA 0 396 NA
969 NA 0 396 NA
8793 + 1 -3599 2
8794 + 1 -3598 2
3277 - -1 -146 3
3278 - -1 -147 3
3279 - -1 -148 3
8795 + 1 -3597 4
8796 + 1 -3596 4
3280 - -1 -149 5
3281 - -1 -150 5
3282 - -1 -151 5
3283 - -1 -152 6
3284 - -1 -153 6
3285 - -1 -154 6
5692 NA 0 0 NA
3286 - -1 -155 7
我想在一个额外的列中创建一个计数器,最好在最后(比如说 $6),其中 For $5 if $2=+/-/NA 分别添加 +1/-1 和 0,并保持相同的值直到5 美元就这样改变了价值。为了更清楚,我想制作一个关于 5 美元价值的表格。基于 2 美元,我的计数器必须将其值更改为 +1 表示 +,-1 表示 - 和 0 表示 N/A。最后,我需要新的计数器不断打印计数器值,直到 $5 的值发生变化:
$2 $5 $6
NA NA 0
NA NA 0
NA NA 0
NA NA 0
+ 1 1
+ 1 1
+ 1 1
+ 1 1
NA NA 1
NA NA 1
NA NA 1
+ 2 2
+ 2 2
- 3 1
- 3 1
- 3 1
+ 4 2
+ 4 2
- 5 1
- 5 1
- 5 1
- 6 0
- 6 0
- 6 0
NA 6 0
- 7 -1
我输入了这个:
awk 'BEGIN {v=0; p=0} {if ($2=="-") {v=v-1 ;p=v} if ($2=="NA") {p=n; v=$5;} else {v=$5+1;p=n}; $6=v;$7=p; print}' MyFIle
但它几乎给出了与 $5 相同的值。
【问题讨论】:
-
感谢您在问题中展示您的努力(代码)。您能否添加关于如何获得输出的逻辑部分?老实说,好帖子,但我无法得到它你如何获得预期的输出,请添加更多信息。
-
我编辑了我的帖子。我希望我现在写得更清楚了。不幸的是,我不是信息学家,所以我的术语需要改进:P。