ファイル比較エラー - awk

ファイル比較エラー - awk

2つのファイルがありますfile1.txtfile2.txt列2と3に基づいて両方に共通のレコードを選択しfile1.txt、それを追加の列(列4)にコピーしたいと思います。file2.txtout.txtfile2.txt

入力例:

file1.txt

abc 1 a f11 f13 f14 
abd 2 b f12 f14 f13  
abe 4 d f13 f16 f12 
acf 5 s f14 f15 f19

file2.txt

abc 1 a f21 f23 f24 
abd 1 b f21 f24 f23  
abe 4 d f24 f26 f22 
acf 6 s f23 f25 f29

希望の出力

out.txt

 abc 1 a f11 f13 f14 f21
 abe 4 d f13 f16 f12 f24

私も同様の質問をしました。質問3つのファイルを活用して、同様の入力に基づいて同様の出力を抽出する方法については、前述のとおりです。私はUnixの世界に初めて触れ、ファイルの処理方法を学んでいます。これに基づいて、以下のコードを試してみましたawkが、成功しませんでした。誰かが何が間違っているかを確認して提案できますか?

awk 'FILENAME == ARGV[1] {
    m[$2,$3] = 0; z[$2,$3] = $6;
    next;
}
{
    if (($2,$3) in m && m[$2,$3] == 1) {
        print $0 " " z[$2,$3] >"out.txt";
    }
}' file2.txt file1.txt

ベストアンサー1

アッ

awk 'FNR==NR      {
                     a[$2, $3]=$4
                     next
                  }
     ($2, $3) in a{
                     print $0, a[$2, $3]
                  }
    ' file2.txt file1.txt > out.txt

参加する

join -j 2 \
    <(sort -k2,3 file2.txt | sed 's/ /+/2') \
    <(sort -k2,3 file1.txt | sed 's/ /+/2') \
    -o 1.1,1.2,1.3,1.4,1.5,2.3 |
        sed 's/+/ /' > out.txt

おすすめ記事