У меня есть такой большой файл:
$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), в котором за $ 5, если $ 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.