Awk 比较不同文件中的特定列并打印不匹配的列

Awk 比较不同文件中的特定列并打印不匹配的列,awk,Awk,将文件1中的第4列与文件2中的colunan 5进行比较,将要打印不匹配的列(只需打印比较列中的值) dff 233 444 asd aaaa dff 233 444 asd bbbb dff 233 444 asd cccx dff 233 444 asd ddda dff 233 444 asd adas file1 111 435 123 aaaa 111 435 123 bbbb 111 435 123 cccc 111 435 123 dddd 111

将文件1中的第4列与文件2中的colunan 5进行比较,将要打印不匹配的列(只需打印比较列中的值)

dff 233 444 asd aaaa
dff 233 444 asd bbbb
dff 233 444 asd cccx
dff 233 444 asd ddda
dff 233 444 asd adas
file1

111 435 123 aaaa    
111 435 123 bbbb    
111 435 123 cccc    
111 435 123 dddd    
111 435 123 adas  
dff 233 444 asd aaaa
dff 233 444 asd bbbb
dff 233 444 asd cccx
dff 233 444 asd ddda
dff 233 444 asd adas
文件2

dff 233 444 asd aaaa
dff 233 444 asd bbbb
dff 233 444 asd cccx
dff 233 444 asd ddda
dff 233 444 asd adas
所需输出

dff 233 444 asd aaaa
dff 233 444 asd bbbb
dff 233 444 asd cccx
dff 233 444 asd ddda
dff 233 444 asd adas
cccc cccx
dddd ddda
使用此代码,我得到了所需的输出

dff 233 444 asd aaaa
dff 233 444 asd bbbb
dff 233 444 asd cccx
dff 233 444 asd ddda
dff 233 444 asd adas
paste file file2 | awk '{ if($1 != $2)  print }' 
awk 'NR==FNR{a[$1]; next} !(($1) in a)' file1 file2
如何修复下面的代码以获得准确的所需输出

dff 233 444 asd aaaa
dff 233 444 asd bbbb
dff 233 444 asd cccx
dff 233 444 asd ddda
dff 233 444 asd adas
paste file file2 | awk '{ if($1 != $2)  print }' 
awk 'NR==FNR{a[$1]; next} !(($1) in a)' file1 file2
提前感谢。

编辑:根据OP的更改输入添加以下解决方案

dff 233 444 asd aaaa
dff 233 444 asd bbbb
dff 233 444 asd cccx
dff 233 444 asd ddda
dff 233 444 asd adas
awk '
FNR==NR{
  a[$NF]=$NF
  next
}
($NF in a){
  delete a[$NF]
  next
}
{
  print $NF
}
END{
  for(i in a){
    print i
  }
}
' file1 file2 | paste -sd' '


请您尝试以下内容(用显示的样品书写和测试)

dff 233 444 asd aaaa
dff 233 444 asd bbbb
dff 233 444 asd cccx
dff 233 444 asd ddda
dff 233 444 asd adas
编辑:根据OP的更改输入添加以下解决方案

dff 233 444 asd aaaa
dff 233 444 asd bbbb
dff 233 444 asd cccx
dff 233 444 asd ddda
dff 233 444 asd adas
awk '
FNR==NR{
  a[$NF]=$NF
  next
}
($NF in a){
  delete a[$NF]
  next
}
{
  print $NF
}
END{
  for(i in a){
    print i
  }
}
' file1 file2 | paste -sd' '


请您尝试以下内容(用显示的样品书写和测试)

dff 233 444 asd aaaa
dff 233 444 asd bbbb
dff 233 444 asd cccx
dff 233 444 asd ddda
dff 233 444 asd adas

我会选择您已有的
粘贴| awk
解决方案,但由于您特别要求纯awk版本:

dff 233 444 asd aaaa
dff 233 444 asd bbbb
dff 233 444 asd cccx
dff 233 444 asd ddda
dff 233 444 asd adas
$ awk 'NR==FNR{a[NR]=$4; next} $5 != a[FNR]{print a[FNR], $5}' file1 file2
cccc cccx
dddd ddda

我会选择您已有的
粘贴| awk
解决方案,但由于您特别要求纯awk版本:

dff 233 444 asd aaaa
dff 233 444 asd bbbb
dff 233 444 asd cccx
dff 233 444 asd ddda
dff 233 444 asd adas
$ awk 'NR==FNR{a[NR]=$4; next} $5 != a[FNR]{print a[FNR], $5}' file1 file2
cccc cccx
dddd ddda