複数の列で区切られたファイルを単一の列ファイルと比較し、「共通」行を削除する方法は?

複数の列で区切られたファイルを単一の列ファイルと比較し、「共通」行を削除する方法は?

2つのファイルがあります。 1つは1つの列のみを含み、1つは複数の別々|の列を含みます。ファイル1とファイル2を比較し、共通行を削除して新しいファイルにコピーする必要があります。

file2「共通」行は、7番目の列がの(単一)値と同じ行ですfile1

  • ファイル1:
    12345
    89457
    34890
    
  • ファイル2:
    GTDtech
    rachel|USA|00|34|ty|ES|12345|789900098|tye
    FLPEN|MAL|90|45|tui|FE|34890|883562748|yu
    ahnat|jap|88|91|hb|kl|24424|784284141|fwfhnw
    

答え1

$ awk -F'|' 'NR==FNR {a[$1]=1; next}; ! ($7 in a)' file1 file2
GTDtech
ahnat|jap|88|91|hb|kl|24424|784284141|fwfhnw

これはfile1を読み取り、配列のa各行に1つの要素を作成します。次にfile2を読み取り、7列の列を含むすべての行を印刷します。いいえ配列からa

関連情報