将第4列中的值与第5列和第6列进行比较,打印找不到的值。
如果第4列中存在NA值,则需要打印两个值(第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
谢谢。
答案 0 :(得分:1)
请您尝试以下。
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
答案 1 :(得分:1)
由于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) )