特定の列の値に同じ符号(-または+)を持つ2つのファイルの行をフィルタリングする方法は?

特定の列の値に同じ符号(-または+)を持つ2つのファイルの行をフィルタリングする方法は?

以下のように2つのファイルがあります。

  • file1:
    6:66893424_T_C -0.5985 
    rs151222586 -0.0351 
    rs12364336 -0.0030 
    rs57502521 0.0099 
    
  • file2:
    6:66893424_T_C 0.5985
    rs151222586 -0.0351
    rs12364336 0.003
    rs57502521 -0.0099
    

私の考えでは:

  • 列2で同じ記号(マイナス記号またはプラス記号)を持つ行を検索する
  • シンボルマッチングのために列 1 項目のリストを作成します。
  • 一致する項目がない列1項目のリストを作成します。

私の考えでは:

  • 一致する出力は
    rs151222586
    
  • そして比類のない出力
    6:66893424_T_C
    rs12364336
    rs57502521
    

ベストアンサー1

2番目のフィールドを4番目のフィールドと比較できるように、+awkファイルを並べて貼り付けます。

paste file1 file2 |
awk '
  $2&&$4 {
    print $1 > ($2*$4>0?"match":"unmatch")
  }
'

結果はファイルの一致と不一致です。

おすすめ記事