3つのファイル比較:列比較を使用すると、あるファイルには行がありますが、他のファイルにはありません。

3つのファイル比較:列比較を使用すると、あるファイルには行がありますが、他のファイルにはありません。

3つのファイルがあり、file1.txtフォーマットは同じです(データタイプは同じで、列数は同じです)。file2.txtfile3.txt

列2と列3をそれぞれ比較して、出力ファイルfile1.txtに存在しないレコードを選択したいと思いますfile2.txt。これを行う方法をお手伝いできますか?file3.txtout.txt

入力例:

file1.txt

abc 1 a f11 f13 f14 
abd 2 b f12 f14 f13  
abe 4 d f13 f16 f12 
acf 6 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

file3.txt

 abc 1 a f31 f33 f34 
 abd 3 b f31 f34 f33  
 acf 6 s f33 f35 f39 
 abe 3 d f34 f36 f32

希望の出力

out.txt

 abd 2 b f12 f14 f13 

この行に加えて、他の行がに存在しますfile2.txtfile3.txt

この投稿が仕事に役立つと思います3つのファイル比較する2つのファイル。

ベストアンサー1

そんなに好きならawk

awk '
FILENAME != ARGV[3] {
    m[$2,$3] = 1
    next
    }
!(($2,$3) in m)
' file3.txt file2.txt file1.txt > out.txt

私には簡単なことです。

cut -d" " -f 2,3 file2.txt file3.txt | grep -v -f - file1.txt > out.txt

おすすめ記事