Сравните столбцы и выведите значения, которые не совпадают. - PullRequest
0 голосов
/ 08 сентября 2018

Сравнивая значение в столбце 4 со столбцами 5 и 6, выведите значение не найдено.

Если значение NA присутствует в столбце 4, оба значения (столбцы 5 и 6) необходимо распечатать.

Входной файл

1218885385520000 3240739773    VA     2 24 2 
1218917539980000 3195339725    VA    29 29 30 
1218894095580000 3241939989    VA     7 14 7 
1218892969380000 3242739701    VA    24 24 2 
1218894023580000 3198938973    VA    NA 4 9 
1218883439612000 3199739137    VA    16 16 18 
1218907932780000 3238539773    VA    NA 22 24
1218914177580000 3196739725    VA    29 29 30

Ожидаемый результат

1218885385520000 3240739773    VA    24 
1218917539980000 3195339725    VA    30 
1218894095580000 3241939989    VA    14 
1218892969380000 3242739701    VA     2 
1218894023580000 3198938973    VA     4
1218894023580000 3198938973    VA     9 
1218883439612000 3199739137    VA    18 
1218907932780000 3238539773    VA    22
1218907932780000 3238539773    VA    24
1218914177580000 3196739725    VA    30

Я пытался

awk '$4!=$5 $6 {print $4,"=",$5, $6}' FILE

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 08 сентября 2018

Так как NA никогда не появляется в поле 5 или поле 6, все что вам нужно:

$ awk '{for (i=5;i<=NF;i++) if ($4!=$i) print $1, $2, $3, $i}' file
1218885385520000 3240739773 VA 24
1218917539980000 3195339725 VA 30
1218894095580000 3241939989 VA 14
1218892969380000 3242739701 VA 2
1218894023580000 3198938973 VA 4
1218894023580000 3198938973 VA 9
1218883439612000 3199739137 VA 18
1218907932780000 3238539773 VA 22
1218907932780000 3238539773 VA 24
1218914177580000 3196739725 VA 30

если NA может появиться в поле 5 или поле 6, то вам просто нужно настроить if, чтобы включить этот случай, т.е. if ( ($4=="NA") || ($4!=$i) )

0 голосов
/ 08 сентября 2018

Не могли бы вы попробовать следующее.

awk '$4=="NA"{print $1,$2,$3,$5 ORS $1,$2,$3,$6;next} {val=$4>$5?$4:$5;print $1,$2,$3,(val>$6?val:$6);val=""}'  Input_file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...