次の形式のデータファイルがあります
ID Date Sex Age r_val r_flag l_val l_flag
0106610856 16/09/11 M 50 12.061 N 11.447 N
0107470802 09/09/11 F 64 3.146 A 4.338 A
0108490513 21/07/11 M 61 8.243 A 7.344 A
0108590534 18/08/11 M 52 4.714 A 5.106 A
0109480651 26/07/12 M 63 9.403 N 9.136 N
0110460758 21/07/11 M 64 5.643 I 4.272 I
0111290260 08/11/12 F 83 9.747 N 8.551 A
0111410339 07/02/13 M 71 4.979 A 4.482 A
私がやりたいのは、新しいファイルID、Sex、Age、Value(対応するフラグがNに設定されている場合は常にr_valまたはl_val)に出力することです。上記の出力例を次に示します
0106610856 M 50 12.061
0106610856 M 50 11.447
0109480651 M 63 9.403
0109480651 M 63 9.136
0111290260 F 83 9.747
これを実現するために、次のAwkコマンドを試しました。awk '{if ($6 ~ /N/) print $1,$3,$4,$5; else if ($6 ~ /N/) print $1,$3,$4,$7}'
次の結果が得られます
0106610856 M 50 12.061
0109480651 M 63 9.403
0111290260 F 83 9.747
最初の条件が真の場合、ifループは$ 8〜/ N /の場合は検索されないため、これが正しくない形式であることを私は知っています。したがって、私のawkコマンドは、$6条件がfalseの場合にのみ$8条件がtrueの場合にl_valを取得します。r_flagとl_flagの両方がNに設定されている場合、awkコマンドを変更してr_valとl_valの両方を取得するにはどうすればよいですか。