Linux awk检查文件a中某列的值是否存在于文件B中,如果不存在,则打印文件a的整行

Linux awk检查文件a中某列的值是否存在于文件B中,如果不存在,则打印文件a的整行,linux,awk,Linux,Awk,文件A: 文件B: date;numberX;descX;numberY 08-03-2021;5618452029952;TEXT;2250630000000 08-03-2021;5618452029952;TEXT;2250660000000 08-03-2021;5618452029952;TEXT;2250670000000 08-03-2021;5618452029952;TEXT;2250700000000 08-03-2021;5618452029952;TEXT;2250760

文件A:

文件B:

date;numberX;descX;numberY
08-03-2021;5618452029952;TEXT;2250630000000
08-03-2021;5618452029952;TEXT;2250660000000
08-03-2021;5618452029952;TEXT;2250670000000
08-03-2021;5618452029952;TEXT;2250700000000
08-03-2021;5618452029952;TEXT;2250760000000
我想检查fileA中的numberY(第4列)是否存在于fileB中(只有1列no;),如果不存在,那么我希望打印fileA的整行,而不是匹配项

所以它应该表现出来

2250630000000
2250670000000
2250700000000
2250760000000
我以为我很快就可以和awk合作了,但我遗漏了一些东西

谢谢你的回答

插件:我一开始就想看看是否能找到匹配项,但即使这样也似乎失败了:

08-03-2021;5618452029952;TEXT;2250660000000

加载项:添加了示例文件

和您显示的示例,请尝试以下内容。用GNU
awk
编写和测试

awk -F \; 'NR == FNR { a[$0]; next } ($4 in a)' fileB fileA
说明:添加上述内容的详细说明

awk -v RS='\r?\n' 'FNR==NR{arr[$0];next} !($4 in arr)' fileB FS=";" fileA

谢谢你的回答,但遗憾的是这没有给出答案results@Calan,有了你们展示的样品,对我来说效果很好,您的文件是否与所示示例相同/无结果是否符合要求检查文件a中某列的值是否存在于文件B中,如果不打印整行。我不知道OP希望输出什么或何时输出,但
文件B中的Windows换行符将破坏所有解决方案。添加的一些示例刚刚测试了您的新代码,非常感谢,我想检查文件B中是否存在文件a中的数字,如果不存在,那么我希望打印文件a的整行,而不是匹配项。请在
fileA
中添加另一行
fileB
中不存在的
$4
,并显示预期输出。此外,您已标记,但是否确定这些文件没有windows换行符(\r\n而不是Linux裸机)?
awk -v RS='\r?\n' '    ##Starting awk program from here.
FNR==NR{               ##Checking condition which will be TRUE when fileB is being read.
  arr[$0]              ##Creating array arr with current line index.
  next                 ##next will skip all further statements from here.
}
!($4 in arr)           ##Checking condition if 4th column of fileA is present in arr then print line.
' fileB FS=";" fileA   ##Mentioning Input_file(s) and setting FS=";" before fileA.